资讯详情

资讯详情

Langchain-Chatchat 怎么配置 Milvus、PostgreSQL 等非 FAISS 向量库接入知识库

Langchain-Chatchat 怎么配置 Milvus、PostgreSQL 等非 FAISS 向量库接入知识库【免费下载链接】Langchain-ChatchatLangchain-Chatchat原Langchain-ChatGLM基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-ChatchatLangchain-Chatchat 的知识库默认使用 FAISS 向量库向量数据保存在本地文件里。当你想把向量数据存到 Milvus、PostgreSQLpgvector这类独立服务中时需要修改kb_settings.yaml里的DEFAULT_VS_TYPE和kbs_config然后重建知识库让向量重新入库到目标向量库。本文基于项目 0.3.x 版本的配置项与源码给出从修改配置到验证向量库类型已切换的完整操作路径适用于通过 pip 或源码安装、已能运行chatchat命令的环境。前置条件已按 README 的快速上手完成安装pip install langchain-chatchat -U并能执行chatchat命令。模型推理框架Xinference、Ollama 等已启动且 Embedding 模型可用——README 明确要求初始化知识库前必须确保已启动模型推理框架及对应embedding模型并完成model_settings.yaml的模型接入配置。目标向量库服务已在网络可达的地址上运行例如本机127.0.0.1的 Milvus 或 PostgreSQL。项目文档中给出的连接参数只描述Chatchat 侧如何连接外部服务本身的部署不在本文范围内。修改 kb_settings.yaml切换默认向量库类型配置由chatchat init在CHATCHAT_ROOT下生成知识库相关配置都在kb_settings.yaml定义见 settings.py 中的KBSettings类。需要修改两处DEFAULT_VS_TYPE新建知识库的默认向量库类型可选值为faiss、milvus、zilliz、pg、es、relyt、chromadb默认是faiss。kbs_config各向量库的连接参数。接入 Milvus 时修改kbs_config中milvus段的连接信息以及milvus_kwargs中的索引/搜索参数默认值来自源码模板DEFAULT_VS_TYPE: milvus kbs_config: milvus: host: 127.0.0.1 port: 19530 user: password: secure: False milvus_kwargs: search_params: metric_type: L2 index_params: metric_type: L2 index_type: HNSWmilvus_kwargs中的index_params/search_params会在创建 Milvus 集合时传入见 milvus_kb_service.py 的_load_milvusconnection_args使用kbs_config中的milvus段集合名即知识库名。接入 PostgreSQLpgvector时只需要一个连接 URIhost/user/password/端口/库名都包含在它里面DEFAULT_VS_TYPE: pg kbs_config: pg: connection_uri: postgresql://postgres:postgres127.0.0.1:5432/langchain_chatchat上述 URI 是settings.py中的默认模板值请替换为你实际的 PostgreSQL 账号、地址和库名。代码侧pg_kb_service.py会通过该 URI 创建 SQLAlchemy 引擎并用PGVector在库中读写langchain_pg_collection、langchain_pg_embedding两张表距离策略固定为欧几里得距离DistanceStrategy.EUCLIDEAN。如果同一套环境里还接了 Relyt 或 Elasticsearch对应的relyt、es配置段也在同一个kbs_config里relyt使用postgresqlpsycopg2://协议的 URIes使用 scheme/host/port/index_name/user/password 等字段改法相同。Python 侧依赖说明Milvus代码通过from pymilvus import Collection访问 Milvus即环境里需要可用的pymilvus客户端库。PostgreSQL代码导入langchain.vectorstores.pgvector和sqlalchemy[pyproject.toml](https://link.gitcode.com/i/18d6ec1461cd1d7872e8b14f31f7069c)的extended_testing组中包含pgvector说明该包是随 langchain 的 PGVector 集成提供的。若你的环境报缺少psycopg2之类的 PostgreSQL 驱动按报错信息自行用 pip 安装对应驱动即可项目未把具体驱动版本写入主依赖清单本文不做额外断言。重建知识库把向量写入新向量库配置改完后知识库的向量数据仍留在原来的 FAISS 文件里必须重建才会进入新向量库。两种入口1. 初始化时一并重建首次部署推荐chatchat init -rchatchat init会创建数据目录、复制 samples 知识库文件、生成默认 yaml 配置并在-r时以Settings.kb_settings.DEFAULT_VS_TYPE重建知识库实现见 cli.py。-k参数可指定要重建的知识库名称多个名称用,分隔默认为samples-e可指定 Embedding 模型。2. 配置已初始化后单独重建chatchat kb -rchatchat kb是知识库维护命令实现见 init_database.py除-rrecreate vector store重建向量库外还提供参数用途-r, --recreate-vs重建向量库。当你把文档文件拷贝进 content 目录但向量库未入库或DEFAULT_VS_TYPE/Embedding 模型变更后使用-u, --update-in-db只更新数据库中已存在文件的向量-i, --increment只为本地文件夹新增且数据库中不存在的文件建向量-n, --kb-name限定操作的知识库名称可多次指定缺省为 KB_ROOT_PATH 下所有知识库-e, --embed-model指定 Embedding 模型--create-tables/--clear-tables创建空表 / 清空drop数据库表后再重建向量库--prune-db/--prune-folder删除数据库有、本地无的文档 / 删除本地有、数据库无的文件注意--clear-tables会 drop 表、--prune-*会删除数据或文件属于不可逆操作执行前确认操作对象和备份。从 FAISS 切到 Milvus/PG 的主路径就是chatchat kb -r必要时加-n指定知识库名。验证向量库类型已切换chatchat kb -r完成后终端会输出重建汇总。README 给出的成功日志示例FAISS 场景如下---------------------------------------------------------------------------------------------------- 知识库名称 samples 知识库类型 faiss 向量模型 bge-large-zh-v1.5 知识库路径 /root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples 文件总数量 47 入库文件数 42 知识条目数 740 用时 0:02:29.701002 ---------------------------------------------------------------------------------------------------- 总计用时 0:02:33.414425以上是文档示例文件数、条目数和用时会随你的知识库内容变化。判断切换是否成功的点是知识库类型一行的值改为milvus或pg即代表新知识库按新向量库类型建好。随后执行chatchat start -a启动服务在 WebUI 的知识库管理页确认对应知识库存在且文件、条目数正常。替代路径不改默认值为单个知识库指定向量库类型DEFAULT_VS_TYPE影响的是新建时的默认类型已有知识库各自记录建库时的类型。想只给个别知识库用非 FAISS 向量库时WebUI知识库管理页选择新建知识库表单中有向量库类型下拉框选项来自kbs_config的键默认选中DEFAULT_VS_TYPE和Embeddings模型选择框提交后调用创建接口实现见 knowledge_base.py。API知识库创建接口路由/knowledge_base实现见 kb_api.py接收knowledge_base_name、vector_store_type缺省取DEFAULT_VS_TYPE、kb_info、embed_model。同名知识库会返回 404 提示已存在同名知识库。两种入口的效果一致该知识库按你指定的向量库类型创建kbs_config中对应类型的连接参数必须已配好。知识库问答界面示意文档配图左侧可选择知识库并配置匹配条数、分数阈值回答会附带知识库匹配结果。限制与注意事项切换向量库类型只对新创建/重建的知识库生效。FAISS 与 Milvus/PG 之间没有原样迁移命令跨类型换库的路径就是修改配置 →chatchat kb -r重建 → 核对汇总日志中的知识库类型。向量库保存在哪里由类型决定FAISS 保存到磁盘文件Milvus 保存到数据库PGVector 暂未支持本地保存见 base.py 中save_vector_store的注释。删除类操作影响范围要分清chatchat kb --clear-tables作用于元数据库表--prune-db/--prune-folder删除文档或本地文件在 WebUI/API 删除知识库时PG 侧会同时删除数据库中的记录和文件系统上的知识库目录Milvus 侧会释放并 drop 集合见do_drop_kb实现均不可逆。basic_settings.yaml中的SQLALCHEMY_DATABASE_URI是知识库元信息数据库的连接不是 pgvector 的连接两者不要混淆。完成重建并确认知识库类型已变为目标类型后后续在该知识库上的问答检索就会走新向量库。更多向量库服务的类级实现细节可参考仓库中 milvus_kb_service.md 与 pg_kb_service.md 两份文档。【免费下载链接】Langchain-ChatchatLangchain-Chatchat原Langchain-ChatGLM基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →