Skip to content

RAG

向量数据库

RAG使用向量数据库(Vector Database),不存储关键词,它存储的是向量数据。因此,当用户需要搜索向量的时候,需要把问题也先转换成一个向量,此时就需要用一个嵌入模型(Embedding Model)来完成。

举例来说,当一个用户想在向量数据库中搜索“我是一个新手,这个月收入1000,应该怎么记录会计账目”时,整个过程的流程如下:

步骤 操作者 行为
(可选)查询分析 LLM LLM把问题整理为关键词和过滤条件,比如:
{"query": "记录会计账目 收入1000元",
"filter": "新手"}
Embedding Embedding Model
(嵌入模型)
例如用OpenAIEmbeddings,它会把上一步的
查询文本转换为一个查询坐标(向量),比如
[0.8, 0.2, 0.9, ...]
查询 向量数据库 在数据库中找到和查询向量最接近的向量,
找到的该向量是一个地址,也就是一个key,
然后其对应着原始文本value
prompt拼接 agent 将查询到的相关原始文本和原本提问拼接
LLM回复 LLM LLM生成最终答案并返回

。、