# 🔥ElasticSearch-Langchain-Chatglm2
# ✨项目介绍
受[langchain-ChatGLM](https://github.com/imClumsyPanda/langchain-ChatGLM)项目启发,由于Elasticsearch可实现文本和向量两种方式混合查询,且在业务场景中使用更广泛,因此本项目用Elasticsearch代替Faiss作为知识存储库,利用Langchain+Chatglm2实现基于自有知识库的智能问答。
本项目希望抛砖引玉,能够帮助大家快速地做技术验证和技术路线选取。
默认使用的embedding模型为[moka-ai/m3e-large](https://huggingface.co/moka-ai/m3e-large)
目前仅支持上传 txt、docx、md等文本格式文件。
默认使用余弦距离计算文本相似性。
# 🚀使用方式
### 修改配置文件
修改配置文件[config.ini](https://github.com/iMagist486/ElasticSearch-Langchain-Chatglm2/blob/main/configs/config.ini),配置Elasticsearch链接
模型可修改为本地路径
**增加对[InternLM](https://github.com/InternLM/InternLM)的支持:**`llm_model`修改为`internlm/internlm-chat-7b`即可。
### 运行web demo
执行[web.py](https://github.com/iMagist486/ElasticSearch-Langchain-Chatglm2/blob/main/web.py)
```python
python web.py
```
# 📑Demo详解
![demo_pic](docs/demo_pic.png)
### 文档交互模块:
ES插入时文档交互模块会显示插入是否成功,或抛出异常内容;问答时,文档交互模块会展示查询到的内容,包括文档来源,文档内容和相似度分数。
### 查询设置模块:
**三种查询模式**,具体区别见Elasticsearch官方文档
近似查询:[Approximate kNN](https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html#approximate-knn)
混合查询:[Combine approximate kNN with other features](https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html#_combine_approximate_knn_with_other_features)
精确查询:[Exact, brute-force kNN](https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html#exact-knn)
**查询阈值**:
仅返回相似度分数大于阈值的查询结果,0为不设限制
**top_k**:
返回最相关的k个文本
**knn_boost**:
适用于混合查询,knn_score所占比例
# 🐳Docker 部署
打包docker镜像
```sh
docker build -f docker/Dockerfile -t es-chatglm:v1.0 .
```
启动docker容器
```sh
docker run --gpus "device=0" -p 8000:8000 -it es-chatglm:v1.0 bash
```
Langchain+Chatglm2实现基于自有知识库的智能问答.zip
版权申诉
5星 · 超过95%的资源 32 浏览量
2023-10-30
11:36:53
上传
评论 1
收藏 327KB ZIP 举报
小黑码蚁
- 粉丝: 2414
- 资源: 2082
最新资源
- 笔记实验六,spark,大数据分析
- ####蓝桥杯python的详细的信息介绍
- 电子万年历软件仿真(经过多次修改,保证正确性)
- Unity XR 手势射击控制脚本(适用于任何可手势识别的设备)
- 机械设计全自动电表(NB和IC卡表)控制和上壳装配线sw16可编辑非常好的设计图纸100%好用.zip
- 基于matlab的EAN-13条形码识别系统GUI界面.zip代码53
- matlab基于bp神经网络交通信号标志识别GUI界面13个标志.zip代码54
- 电子万年历答辩实物展示视频mp4格式
- 基于python实现的程序,包括哈希感知算法cvHash,图像切割cvsplit,固定目标检测cvRec(附文档ppt)等
- 计算0-10000之间所有偶数的和
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈