ElasticSearch-Langchain-Chatglm2 项目教程
1、项目介绍
ElasticSearch-Langchain-Chatglm2 是一个基于 Elasticsearch、Langchain 和 Chatglm2 的自有知识库问答系统。该项目受 langchain-ChatGLM 项目启发,使用 Elasticsearch 代替 Faiss 作为知识存储库,支持文本和向量两种方式混合查询,适用于更广泛的业务场景。
2、项目快速启动
修改配置文件
首先,修改配置文件 config.ini
,配置 Elasticsearch 链接。模型路径可修改为本地路径,增加对 InternLM 的支持:
[Elasticsearch]
host = localhost
port = 9200
[Model]
embedding_model = moka-ai/m3e-large
llm_model = internlm/internlm-chat-7b
运行 Web Demo
执行以下命令启动 Web 界面:
python web.py
3、应用案例和最佳实践
文档交互模块
在 ES 插入时,文档交互模块会显示插入是否成功或抛出异常内容。问答时,文档交互模块会展示查询到的内容,包括文档来源、文档内容和相似度分数。
查询设置模块
支持三种查询模式:
- 近似查询:Approximate kNN
- 混合查询:Combine approximate kNN with other features
- 精确查询:Exact brute-force kNN
查询阈值设置:仅返回相似度分数大于阈值的查询结果,0 为不设限制。top_k 设置返回最相关的 k 个文本,knn_boost 适用于混合查询,设置 knn_score 所占比例。
4、典型生态项目
THUDM/chatglm2-6b
ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。
moka-ai/m3e-large
M3E 模型是一个大规模的 Embedding 模型,用于文本向量化,支持多种文本格式。
LangChain
LangChain 是一个用于构建端到端语言模型应用的框架,支持多种语言模型和数据源。
通过结合这些生态项目,ElasticSearch-Langchain-Chatglm2 能够构建一个强大的自有知识库问答系统,适用于多种业务场景。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考