基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)

基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)

img

基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。

1.介绍

  1. 一种利用 langchain思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
  2. 受 GanymedeNil 的项目 document.ai和 AlexZhangji 创建的 ChatGLM-6B Pull Request启发,建立了全流程可使用开源模型实现的本地知识库问答应用。本项目的最新版本中通过使用 FastChat接入 Vicuna, Alpaca, LLaMA, Koala, RWKV 等模型,依托于 langchain框架支持通过基于 FastAPI 提供的 API 用服务,或使用基于 Streamlit 的 WebUI 进行操作。
  3. 依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。
  4. 本项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。

img

从文档处理角度来看,实现流程如下:

img

  • 本项目未涉及微调、训练过程,但可利用微调或训练对本项目效果进行优化。
  • AutoDL 镜像 中 0.2.10版本所使用代码已更新至本项目 v0.2.10 版本。
  • Docker 镜像 已经更新到 0.2.10版本。
  • 本次更新后同时支持DockerHub、阿里云、腾讯云镜像源:

代码语言:javascript

复制

docker run -d --gpus all -p 80:8501 isafetech/chatchat:0.2.10
docker run -d --gpus all -p 80:8501 uswccr.ccs.tencentyun.com/chatchat/chatchat:0.2.10
docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.10

本项目有一个非常完整的Wiki , README只是一个简单的介绍,仅仅是入门教程,能够基础运行。如果你想要更深入的了解本项目,或者想对本项目做出贡献。请移步 Wiki界面

2. 解决的痛点

该项目是一个可以实现 __完全本地化__推理的知识库增强方案, 重点解决数据安全保护,私域化部署的企业痛点。本开源方案采用Apache License,可以免费商用,无需付费。

我们支持市面上主流的本地大语言模型和Embedding模型,支持开源的本地向量数据库。支持列表详见Wiki

3.快速实现案例

3.1. 环境配置
  • 首先,确保你的机器安装了 Python 3.8 - 3.11 (我们强烈推荐使用 Python3.11)。

代码语言:javascript

复制

$ python --version
Python 3.11.7

接着,创建一个虚拟环境,并在虚拟环境内安装项目的依赖

代码语言:javascript

复制

#拉取仓库
$ git clone https://github.com/chatchat-space/Langchain-Chatchat.git#进入目录
$ cd Langchain-Chatchat#安装全部依赖
$ pip install -r requirements.txt 
$ pip install -r requirements_api.txt
$ pip install -r requirements_webui.txt  #默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。

如果在安装"pip install -r requirements.txt "遇到报错:

代码语言:javascript

复制

      distutils.errors.DistutilsError: Command '['/Users/didiyu/ENTER/envs/chain/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/var/folders/yd/mp5rd9bx1x3670cth1fp7n180000gn/T/tmpkl7z5ekl', '--quiet', 'setuptools_scm']' returned non-zero exit status 1.[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed× Encountered error while generating package metadata.
╰─> See above for output.note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
  • 解决方案

代码语言:javascript

复制

step1: pip install setuptools_scm
step 2: pip install wavedrom -i https://pypi.tuna.tsinghua.edu.cn/simple

参考链接:https://github.com/chatchat-space/Langchain-Chatchat/issues/1268

https://github.com/chatchat-space/Langchain-Chatchat/issues/2054

请注意,LangChain-Chatchat 0.2.x 系列是针对 Langchain 0.0.x 系列版本的,如果你使用的是 Langchain 0.1.x系列版本,需要降级您的Langchain版本。

3.2. 模型下载

如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding模型可以从 HuggingFace 下载。

以本项目中默认使用的 LLM 模型 THUDM/ChatGLM3-6B 与 Embedding模型 BAAI/bge-large-zh 为例:

下载模型需要先安装 Git LFS ,然后运行

代码语言:javascript

复制

$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm3-6b
$ git clone https://huggingface.co/BAAI/bge-large-zh
  • 如果遇到模型下载缓慢的情况,可以从魔塔下载
  • chatglm3-6b: https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files
  • bge-large-zh-v1.5: https://modelscope.cn/models/AI-ModelScope/bge-large-zh-v1.5/files

代码语言:javascript

复制

git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
git clone https://www.modelscope.cn/Xorbits/bge-large-zh.git
git clone https://www.modelscope.cn/AI-ModelScope/bge-large-zh-v1.5.git
3.3 Embedding模型介绍

FlagEmbedding专注于检索增强llm领域,目前包括以下项目:

  • Long-Context LLM: Activation Beacon, LongLLM QLoRA
  • Fine-tuning of LM : LM-Cocktail
  • Embedding Model: Visualized-BGE, BGE-M3, LLM Embedder, BGE Embedding
  • Reranker Model: llm rerankers, BGE Reranker
  • Benchmark: C-MTEB
BGE-M3-多语言

(Paper, Code) 在这个项目中,我们发布了BGE-M3,它是第一个具有多功能、多语言和多粒度特性的文本检索模型。

  • 多功能:可以同时执行三种检索功能:单向量检索、多向量检索和稀疏检索。
  • 多语言:支持100多种工作语言。
  • 多粒度:它能够处理不同粒度的输入,从短句子到长达8192个词汇的长文档。

在本项目中,为了提高单一检索模式的性能,提出了一种新的自知识蒸馏方法。 我们优化了批处理策略,支持大批处理大小,这可以在对长文本或大型语言模型进行向量微调时简单使用。 我们还构建了一个用于文档检索的数据集,并提出了一个简单的策略来提高长文本的建模能力。 训练代码和微调数据将在不久的将来开源。

Visualized-BGE-多模态

官方链接 在这个项目中,我们发布了Visualized-BGE。 通过引入image token embedding,Visualized-BGE可以被用来编码混合图文数据。它可以被应用在广泛的多模态检索任务中,包括但不限于:多模态知识检索,多模态查询的图像检索等。

LongLLM QLoRA

我们通过 QLoRA 微调将 Llama-3-8B-Instruct 的上下文长度从 8K 扩展到 80K。 整个训练过程非常高效,在一台8xA800 (80G) GPU 机器上仅需要8个小时。 该模型在NIHS、主题检索和长上下文语言理解等广泛的评估任务中表现出卓越的性能; 同时,它在短上下文中也很好地保留了其原有的能力。 如此强大的长文本能力主要归因于GPT-4生成的仅3.5K合成数据,这表明LLM具有扩展其原始上下文的固有(但在很大程度上被低估)潜力。 事实上,一旦有更多的计算资源,该方法可以将上下文长度扩展更长。

Activation Beacon

由于有限的上下文窗口长度,有效利用长上下文信息是对大型语言模型的一个巨大挑战。 Activation Beacon 将 LLM 的原始激活压缩为更紧凑的形式,以便它可以在有限的上下文窗口中感知更长的上下文。 它是一种有效、高效、兼容、低成本(训练)的延长LLM上下文长度的方法。 更多细节请参考技术报告和代码。

LM-Cocktail

模型合并被用于提高单模型的性能。 我们发现这种方法对大型语言模型和文本向量模型也很有用, 并设计了”语言模型鸡尾酒“方案,其自动计算融合比例去融合基础模型和微调模型。 利用LM-Cocktail可以缓解灾难性遗忘问题,即在不降低通用性能的情况下提高目标任务性能。 通过构造少量数据样例,它还可以用于为新任务生成模型,而无需进行微调。 它可以被使用来合并生成模型或向量模型。 更多细节请参考技术报告和代码。

LLM Embedder

LLM-Embedder向量模型是根据LLM的反馈进行微调的。 它可以支持大型语言模型的检索增强需求,包括知识检索、记忆检索、示例检索和工具检索。 它在6个任务上进行了微调:问题回答,对话搜索,长对话, 长文本建模、上下文学习和工具学习。 更多细节请参考./FlagEmbedding/llm_embedder/README.md

BGE Reranker

交叉编码器将对查询和答案实时计算相关性分数,这比向量模型(即双编码器)更准确,但比向量模型更耗时。 因此,它可以用来对嵌入模型返回的前k个文档重新排序。 我们在多语言数据上训练了交叉编码器,数据格式与向量模型相同,因此您可以根据我们的示例 轻松地对其进行微调。 更多细节请参考./FlagEmbedding/reranker/README.md

我们提供了新版的交叉编码器,支持更多的语言以及更长的长度。使用的数据格式与向量模型类似,但是新增了prompt用于微调以及推理。您可以使用特定的层进行推理或使用完整的层进行推理,您可以根根据我们的示例 轻松地对其进行微调。 更多细节请参考./FlagEmbedding/llm_reranker/README.md

BGE Embedding

BGE Embedding是一个通用向量模型。 我们使用retromae 对模型进行预训练,再用对比学习在大规模成对数据上训练模型。 你可以按照我们的示例 在本地数据上微调嵌入模型。 我们还提供了一个预训练示例 。 请注意,预训练的目标是重构文本,预训练后的模型无法直接用于相似度计算,需要进行微调之后才可以用于相似度计算。 更多关于bge的训练情况请参阅论文和代码.

注意BGE使用CLS的表征作为整个句子的表示,如果使用了错误的方式(如mean pooling)会导致效果很差。

C-MTEB

中文向量榜单,已整合入MTEB中。更多细节参考 论文 和代码.

Embedding模型列表
ModelLanguageDescriptionquery instruction for retrieval [1]
BAAI/bge-m3Multilingual推理 微调多功能(向量检索,稀疏检索,多表征检索)、多语言、多粒度(最大长度8192)
LM-CocktailEnglish微调的Llama和BGE模型,可以用来复现LM-Cocktail论文的结果
BAAI/llm-embedderEnglish推理 微调专为大语言模型各种检索增强任务设计的向量模型详见 README
BAAI/bge-reranker-largeChinese and English推理 微调交叉编码器模型,精度比向量模型更高但推理效率较低 [2]
BAAI/bge-reranker-baseChinese and English推理 微调交叉编码器模型,精度比向量模型更高但推理效率较低 [2]
BAAI/bge-large-en-v1.5English推理 微调1.5版本,相似度分布更加合理Represent this sentence for searching relevant passages:
BAAI/bge-base-en-v1.5English推理 微调1.5版本,相似度分布更加合理Represent this sentence for searching relevant passages:
BAAI/bge-small-en-v1.5English推理 微调1.5版本,相似度分布更加合理Represent this sentence for searching relevant passages:
BAAI/bge-large-zh-v1.5Chinese推理 微调1.5版本,相似度分布更加合理为这个句子生成表示以用于检索相关文章:
BAAI/bge-base-zh-v1.5Chinese推理 微调1.5版本,相似度分布更加合理为这个句子生成表示以用于检索相关文章:
BAAI/bge-small-zh-v1.5Chinese推理 微调1.5版本,相似度分布更加合理为这个句子生成表示以用于检索相关文章:
BAAI/bge-large-enEnglish推理 微调向量模型,将文本转换为向量Represent this sentence for searching relevant passages:
BAAI/bge-base-enEnglish推理 微调base-scale 向量模型Represent this sentence for searching relevant passages:
BAAI/bge-small-enEnglish推理 微调small-scale 向量模型Represent this sentence for searching relevant passages:
BAAI/bge-large-zhChinese推理 微调向量模型,将文本转换为向量为这个句子生成表示以用于检索相关文章:
BAAI/bge-base-zhChinese推理 微调base-scale 向量模型为这个句子生成表示以用于检索相关文章:
BAAI/bge-small-zhChinese推理 微调small-scale 向量模型为这个句子生成表示以用于检索相关文章:
3.4 ChatGLM3-6B

ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:

  • 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的预训练模型中最强的性能。
  • 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
  • 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM-6B-Base、长文本对话模型 ChatGLM3-6B-32K。

代码语言:javascript

复制

pip install protobuf 'transformers>=4.30.2' cpm_kernels 'torch>=2.0' gradio mdtex2html sentencepiece accelerate
  • 模型下载

代码语言:javascript

复制

pip install modelscope
from modelscope import snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.0")
  • git下载

代码语言:javascript

复制

git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
  • 代码调用

代码语言:javascript

复制

from modelscope import AutoTokenizer, AutoModel, snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.0")
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)
3.5. 初始化知识库和配置文件

按照下列方式初始化自己的知识库和简单的复制配置文件

代码语言:javascript

复制

$ python copy_config_example.py
$ python init_database.py --recreate-vs
  • 配置文件下内容

img

  • basic_config.py.example

代码语言:javascript

复制

import logging
import os
import langchain
import tempfile
import shutil#是否显示详细日志
log_verbose = False
langchain.verbose = False#通常情况下不需要更改以下内容#日志格式
LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logging.basicConfig(format=LOG_FORMAT)#日志存储路径
LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logs")
if not os.path.exists(LOG_PATH):os.mkdir(LOG_PATH)#临时文件目录,主要用于文件对话
BASE_TEMP_DIR = os.path.join(tempfile.gettempdir(), "chatchat")
try:shutil.rmtree(BASE_TEMP_DIR)
except Exception:pass
os.makedirs(BASE_TEMP_DIR, exist_ok=True)
  • kb_config.py.example

代码语言:javascript

复制

import os#默认使用的知识库
DEFAULT_KNOWLEDGE_BASE = "samples"#默认向量库/全文检索引擎类型。可选:faiss, milvus(离线) & zilliz(在线), pgvector, chromadb 全文检索引擎es
DEFAULT_VS_TYPE = "faiss"#缓存向量库数量(针对FAISSCACHED_VS_NUM = 1#缓存临时向量库数量(针对FAISS),用于文件对话
CACHED_MEMO_VS_NUM = 10#知识库中单段文本长度(不适用MarkdownHeaderTextSplitter)
CHUNK_SIZE = 250#知识库中相邻文本重合长度(不适用MarkdownHeaderTextSplitter)
OVERLAP_SIZE = 50#知识库匹配向量数量
VECTOR_SEARCH_TOP_K = 3#知识库匹配的距离阈值,一般取值范围在0-1之间,SCORE越小,距离越小从而相关度越高。
#但有用户报告遇到过匹配分值超过1的情况,为了兼容性默认设为1,在WEBUI中调整范围为0-2
SCORE_THRESHOLD = 1.0#默认搜索引擎。可选:bing, duckduckgo, metaphor
DEFAULT_SEARCH_ENGINE = "duckduckgo"#搜索引擎匹配结题数量
SEARCH_ENGINE_TOP_K = 3
  • model_config.py.example

代码语言:javascript

复制

import os#可以指定一个绝对路径,统一存放所有的Embedding和LLM模型。
#每个模型可以是一个单独的目录,也可以是某个目录下的二级子目录。
#如果模型目录名称和 MODEL_PATH 中的 key 或 value 相同,程序会自动检测加载,无需修改 MODEL_PATH 中的路径。
MODEL_ROOT_PATH = ""#选用的 Embedding 名称
EMBEDDING_MODEL = "bge-large-zh-v1.5"#Embedding 模型运行设备。设为 "auto" 会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
EMBEDDING_DEVICE = "auto"#选用的reranker模型
RERANKER_MODEL = "bge-reranker-large"
#是否启用reranker模型
USE_RERANKER = False
RERANKER_MAX_LENGTH = 1024#如果需要在 EMBEDDING_MODEL 中增加自定义的关键字时配置
EMBEDDING_KEYWORD_FILE = "keywords.txt"
EMBEDDING_MODEL_OUTPUT_PATH = "output"#要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
#列表中第一个模型将作为 APIWEBUI 的默认模型。
#在这里,我们使用目前主流的两个离线模型,其中,chatglm3-6b 为默认加载模型。
#如果你的显存不足,可使用 Qwen-1_8B-Chat, 该模型 FP16 仅需 3.8G显存。
  • prompt_config.py.example

代码语言:javascript

复制

#prompt模板使用Jinja2语法,简单点就是用双大括号代替f-string的单大括号
#本配置文件支持热加载,修改prompt模板后无需重启服务。#LLM对话支持的变量:
#- input: 用户输入内容#知识库和搜索引擎对话支持的变量:
#- context: 从检索结果拼接的知识文本
#- question: 用户提出的问题#Agent对话支持的变量:#- tools: 可用的工具列表
#- tool_names: 可用的工具名称列表
#- history: 用户和Agent的对话历史
#- input: 用户输入内容
#- agent_scratchpad: Agent的思维记录
  • server_config.py.example

代码语言:javascript

复制

import sys
from configs.model_config import LLM_DEVICE#httpx 请求默认超时时间(秒)。如果加载模型或对话较慢,出现超时错误,可以适当加大该值。
HTTPX_DEFAULT_TIMEOUT = 300.0#API 是否开启跨域,默认为False,如果需要开启,请设置为True
#is open cross domain
OPEN_CROSS_DOMAIN = False#各服务器默认绑定host。如改为"0.0.0.0"需要修改下方所有XX_SERVER的host
DEFAULT_BIND_HOST = "0.0.0.0" if sys.platform != "win32" else "127.0.0.1"#webui.py server
WEBUI_SERVER = {"host": DEFAULT_BIND_HOST,"port": 8501,
}

4. 一键启动

按照以下命令启动项目

代码语言:javascript

复制

$ python startup.py -a

5. 启动界面示例

如果正常启动,你将能看到以下界面

  1. FastAPI Docs 界面

img

  1. Web UI 启动界面示例:
  • Web UI 对话界面:

img

img

  • Agent-Tool效果

img

img

  • Web UI 知识库管理页面:

img

那么,我们该如何学习大模型?

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无缝滚动的swiper

看效果 看代码 <swiper :indicator-dots"true" :autoplay"true" circular :interval"3000" :duration"6000" display-multiple-items"3" easing-function"linear"><swiper-item v-for"(item,indx…

经纬恒润助力微宏动力荣获ISO/SAE 21434网络安全流程认证证书

近日&#xff0c;经纬恒润与微宏动力合作的网络安全开发及认证项目顺利完成了阶段性里程碑。作为一家全球化的新能源及储电技术产品及解决方案供应商&#xff0c;微宏动力成功获得了由国际独立第三方检测、检验和认证机构UL Solutions授予的ISO/SAE 21434网络安全流程认证证书。…

[Algorithm][贪心][柠檬水找零][将数组和减半的最少操作次数][最大数][摆动序列]详细讲解

目录 1.柠檬水找零1.题目链接2.算法原理详解3.代码实现 2.将数组和减半的最少操作次数1.题目链接2.算法原理详解3.代码实现 3.最大数1.题目链接2.算法原理详解3.代码实现 4.摆动序列1.题目链接2.算法原理详解3.代码实现 1.柠檬水找零 1.题目链接 柠檬水找零 2.算法原理详解 …

FlashDB的TS数据库的标准ANSI C移植验证

本文目录 1、引言2、环境准备3、修改驱动4、验证 文章对应视频教程&#xff1a; 暂无&#xff0c;可以关注我的B站账号等待更新。 点击图片或链接访问我的B站主页~~~ 1、引言 在当今数据驱动的时代&#xff0c;高效可靠的数据存储与管理对于嵌入式系统及物联网(IoT)应用至关重…

非计算机专业可以考“软考”吗?

全国计算机软件水平考试对报名条件没有学历、资历、年龄以及专业等限制&#xff0c;非计算机专业的人员也可以报考。证书长期有效&#xff0c;考生可根据个人需求选择合适的级别和资格进行报考。报名方式包括网上报名和考生本人到指定地点报名两种。 考试范围 (1) 高级资格包括…

农业领域科技查新点提炼方法附案例!

农业学科是人类通过改造和利用生物有机体(植物、动物、微生物等)及各种自然资源(光、热、水、土壤等)生产出人类需求的农产品的过程&#xff0c;人类在这一过程中所积累的科学原理、技术、工艺和技能&#xff0c;统称为农业科学技术&#xff0c;该领域具有研究范围广、综合性强…

多模态革新:Ferret-v2在高分辨率图像理解与细粒度交互的突破

在多模态大模型&#xff08;MLLMs&#xff09;的研究中&#xff0c;如何将视觉理解能力与语言模型相结合&#xff0c;以实现更精细的区域描述和推理&#xff0c;是一个重要的研究方向。先前的工作如Ferret模型&#xff0c;通过整合区域理解能力&#xff0c;提升了模型在对话中的…

3-异常-出现 PSQLException: Connection refused的8种可能

3-异常-出现 PSQLException: Connection refused的8种可能 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff08;纯纯技术文&#xff09…

问题(05)elementui 输入框里面禁止浏览器自动填充用户名密码、弹出浏览器历史密码提示框

问题描述 el-input&#xff0c;非密码框&#xff0c;在输入时&#xff0c; 问题1&#xff1a; 浏览器自动填充用户名密码。问题2&#xff1a;右边显示浏览器历史密码提示框。 问题解决 问题1&#xff1a;使用auto-complete"new-password" <input type"te…

Rust基础学习-ModulesPackage

在Rust中&#xff0c;模块有助于将程序分割成逻辑单元&#xff0c;以提高可读性和组织性。一旦程序变得更大&#xff0c;将其拆分为多个文件或命名空间非常重要。 模块有助于构建我们的程序。模块是项目的集合&#xff1a;包括函数、结构体甚至其他模块。 Module 定义模块 在…

cleanmymacX和腾讯柠檬到底哪个好用 2024最新使用测评

CleanMyMac X和腾讯柠檬都是Mac系统清理软件&#xff0c;各有其特点和优势&#xff0c;选择哪个更好用取决于用户的具体需求和使用习惯。 经常有新关注的粉丝问&#xff0c;同样做为垃圾清理软件&#xff0c;付费CleanMyMac和免费的柠檬清理哪个更好用&#xff1f;其实&#xf…

大数据集成平台建设方案(Word方案)

基础支撑平台主要承担系统总体架构与各个应用子系统的交互&#xff0c;第三方系统与总体架构的交互。需要满足内部业务在该平台的基础上&#xff0c;实现平台对于子系统的可扩展性。基于以上分析对基础支撑平台&#xff0c;提出了以下要求&#xff1a; 基于平台的基础架构&…

为什么选择 ABBYY FineReader PDF ?

帮助用户们对PDF文件进行快速的编辑处理&#xff0c;同时也可以快速识别PDF文件里的文字内容&#xff0c;并且可以让用户们进行文本编辑&#xff0c;所以可以有效提升办公效率。 ABBYY-ABBYY Finereader 15 Win-安装包&#xff1a;https://souurl.cn/OY2L3m 高级转换功能 ABBY…

【Python】Python 2 测试网络连通性脚本

文章目录 前言1. 命令行传参2. 代码 前言 最近在只有python2的服务器上部署服务&#xff0c;不能用三方类库&#xff0c;这里出于好奇心学习下python。这里简单做个脚本&#xff0c;实现了检验网络连通性的功能&#xff08;类似于curl&#xff09;。 1. 命令行传参 使用命令…

成功塑造领军人物形象,对企业带来哪些好处?

在企业的完整形象中&#xff0c;产品、品牌、高管是最重要的组成部分。小马识途建议中小企业在成长过程中及早对高管形象进行包装&#xff0c;成功塑造企业的领军人物&#xff0c;不单单是企业高管个人的形象提升&#xff0c;对企业经营发展带来诸多益处。小马识途营销顾问简单…

跨行业数据资产整合与应用:探讨如何打破数据孤岛,实现跨行业数据资产的共享与协同应用

目录 一、引言 二、跨行业数据资产整合的必要性 1、数据价值的最大化 2、促进产业创新 3、提升政府治理能力 三、跨行业数据资产整合的挑战 1、技术挑战 2、制度挑战 3、利益挑战 四、打破数据孤岛的策略与方法 1、建立统一的数据标准与规范 2、构建跨行业数据共享…

“全光无线星空”照亮津亚电子智能制造之路

随着第四次工业革命浪潮的到来,智能制造正成为制造业的新常态。工业4.0时代的工厂不再是封闭的制造孤岛,而是通过高度的数字化和网络化,实现生产过程的智能化、自动化和灵活化。在这样的大趋势下,制造业正经历着从传统制造向智能制造的深刻转型,数字化车间和智能化生产线成为推…

Ubuntu 22.04安装 docker

安装过程和指令 # 1.升级 apt sudo apt update # 2.安装docker sudo apt install docker.io docker-compose # 3.将当前用户加入 docker组 sudo usermod -aG docker ${USER} # 4. 重启 # 5. 查看镜像 docker ps -a 或者 docker images # 6. 下载镜像 docker pull hello-world …

海康充电桩报文校验TCP校验和

1 TCP校验文档校验文档要求: 校验码描述 校验码计算范围包含包头标识、消息头和消息体,校验算法采用 TCP 和校验,具体规则如下。 将待校验的所有数据分为 16 位的字(大端序),如果总长度为奇数个字节,则在最后增添一个 位都为 0 的字节; 将所有 16 位的字进行累加,累加…

【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常

【问题分类】驱动使用 【关键字】ODBC、驱动使用、PHP 【问题描述】 PHP使用PDO_ODBC连接yashan数据库&#xff0c;使用绑定参数获取数据时&#xff0c;客户现场出现报错 本地复现未出现异常报错&#xff0c;但是无法正确获取数据。 【问题原因分析】开启ODBC报错日志后&am…