-
基于 ChatGLM-6B+Langchain 实现本地化知识库检索与搜索引擎接入
-
对比 Dify 知识库云服务
- 中文维基百科截止4月份数据,45万
- 截止去年九月的130w条中文维基百科处理结果和对应faiss向量文件
- 金融研报知识图谱
- 以上共 23GB 资料
- 下载链接 提取码: u6ep
- 显存 ≥ 12GB , 运行内存 ≥ 32GB
- 深度学习工作站:GPU: RTX 4090, CPU: Intel(R) Xeon(R) CPU E5-2660 v2
-
创建并激活虚拟环境
python3 -m venv env -
克隆GitHub repository
git clone https://github.com/catundchat/Chinese-LangChain.git -
安装所需库
pip install -r requirements.txt -
按需修改
main.py文件中的文件路径,代码块,应用选择后运行即可。已上传一份修改好的main.py供参考。其中的模型选择部分如下:
llm_model_name = 'THUDM/chatglm-6b-int4-qe' # huggingface repository
# llm_model_name = 'THUDM/chatglm-6b' # or local file path
embedding_model_name = 'GanymedeNil/text2vec-large-chinese' # huggingface: text to vector
embedding_model_name = 'shibing624/text2vec-base-chinese' # huggingface: text to vector
vector_store_path = './cache'
docs_path = './docs'
kg_vector_stores = {
'中文维基百科': './cache/zh_wikipedia',
'大规模金融研报': './cache/financial_research_reports',
'心理学与生活': './cache/psychology_and_life',
'初始化': './cache',
}
# change it to your own knowledge database, if doesn't need it, set it "None"
# kg_vector_stores=None
patterns = ['模型问答', '知识库问答'] #
n_gpus=1
- 接入搜索引擎
- 导入数据库
- Embedding 选择 text2vec-base 模型
- llm 选择 ChatGLM-6B-INT4
- 有模型问答和知识库问答两种方式
使用界面如下:
录制的使用chatglm6b完成多轮对话视频见chatglm6b_demo.mp4
AI爱家可以借鉴其中的知识库问答部分,一部分是知识库问答,一部分是模型问答。较模型问答而言,知识库问答不容易出现常识错误
Dify 部分详见此链接
-
构建数据集:只支持单个文件上传,不能整个文件夹上传,单个文件大小小于15MB,支持文件类型
TXT, HTML, Markdown, PDF -
文本分段与清洗:设置分段与预处理规则
-
文档索引:
a. 嵌入:调用 OpenAI embedding 接口,在用户查询时准确度更高(0.002$/1000 tokens)
b. 其他索引方法:离线向量引擎索引,关键词索引,倒排索引,位图索引等(0 token)
c. 文档索引结束后,数据集即可集成至应用内作为上下文
-
提示词编排:设置prompt
-
模型选择:支持 OpenAI, Azure OpenAI API KEY
| 模型 | 能否使用 |
|---|---|
| gpt-3.5-turbo | ✔️ |
| gpt-4 | ✔️ |
| gpt-3 | ✔️ |
-
Web 端对话机器人:链接在飞书云文档
Engineering Wiki-算法-Dify chatbot -
API : 支持调用对话型应用 API 官网
| 特性 | CHATGLM-6B+Langchain | Dify |
|---|---|---|
| 可使用数据库 | ✔️ | ✔️ |
| 支持的数据类型 | md、pdf、docx、txt | txt,html,markdown,pdf |
| 最大文件 | 理论上是显存大小 | 15MB |
| 数据上传 | 多个文件 | 单个文件 |
| 可使用 GPT-4 | ❌ | ✔️ |
| API调用 | ❌ | ✔️ |