document-ai
如果您想直接使用,避免二次开发,可以查看下边这个库 https://github.com/coderabbit214/bibliothecarius
go基于向量数据库与GPT3.5的通用本地知识库方案(A universal local knowledge base solution based on vector database and GPT3.5)
流程
- 将本地答案数据集,转为向量存储到向量数据
- 当用户输入查询的问题时,把问题转为向量然后从向量数据库中查询相近的答案topK 这个时候其实就是我们最普遍的问答查询方案,在没有GPT的时候就直接返回相关的答案整个流程就结束了
- 现在有GPT了可以优化回答内容的整体结构,在单纯的搜索场景下其实这个优化没什么意义。但如果在客服等的聊天场景下,引用相关领域内容回复时,这样就会显得不那么的突兀。
文件上传流程
sequenceDiagram
participant 用户
participant OpenAI embeddings模型
participant 向量数据库
用户->>+OpenAI embeddings模型: 上传数据
OpenAI embeddings模型->>+向量数据库: 存储向量
用户提问流程
sequenceDiagram
participant 用户
participant embeddings计算
participant 向量数据库
participant ChatGPT
用户->>+embeddings计算: 发出请求
embeddings计算->>+向量数据库: 查询
向量数据库-->>-embeddings计算: 返回查询结果
embeddings计算-->>-用户: 返回向量值
用户->>+ChatGPT: 组装问题请求
ChatGPT-->>-用户: 返回答案
启动
Docker
config
./config/config.yaml
server:
port: 9999
openai:
key: xx
qdrant:
host: http://qdrant:6333
collection-name: test
docker-compose up -d
使用
上传测试数据
curl --location --request POST 'http://127.0.0.1:9999/data/json' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"title": "普通感冒",
"text": "您会出现喉咙发痒或喉咙痛,流鼻涕,流清澈的稀鼻涕(液体),有时轻度发热"
},
{
"title": "常年过敏",
"text": "症状包括鼻塞或流鼻涕,鼻、口或喉咙发痒,眼睛流泪、发红、发痒、肿胀,打喷嚏。"
}
]'