根据传入的文本文件,回答你的问题。
核心逻辑来自于chatPDF,自动化客服AI,以及:ChatWeb
由于原来的ChatWeb项目使用的是pqsql作为向量存储和计算工具,较为复杂,本项目修改成faiss,更简单快速。
- 读取文件,并进行分割
- 对于每段文本,使用text-embedding-ada-002生成特征向量
- 将向量和文本对应关系存入本地pkl文件
- 对于用户输入,生成向量
- 使用向量数据库进行最近邻搜索,返回最相似的文本列表
- 使用gpt3.5的chatAPI,设计prompt,使其基于最相似的文本列表进行回答
就是先把大量文本中提取相关内容,再进行回答,最终可以达到类似突破token限制的效果
后续可以考虑将openai的文本向量改成自定义的向量生成工具
- 项目依赖
主要依赖
faiss
numpy
openai
- 环境变量
设置OPENAI_API_KEY
为你的openai的api key
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
- 运行
python Document_QA.py --input_file test.md --file_embeding test.pkl