RAG,喂给大模型是向量数据吗
不是直接“喂向量”,而是喂“原始文本 + 检索出来的文本片段”给大模型;向量只是用来做检索的“索引形式”,不会直接展示给模型看。[golangstar]
可以分两步理解:
1. RAG 里向量干什么用?
在 RAG(检索增强生成)里,向量的作用是:
先用嵌入模型把知识库里的文本切片(段落、句子等)转换成向量(embedding);
把这些向量存到向量数据库里,用于做语义相似度检索;[github]
用户提问时,把问题也编码成向量,在向量库中查找最相似的若干条记录;
找到对应的原始文本片段(不是向量),再把这些片段和用户问题一起送进大模型。
所以:向量是用来检索“哪些文本片段相关”,大模型真正看的仍然是文本。[blog.csdn]
2. 大模型实际接收的输入是什么?
标准 RAG 流程里,大模型看到的内容通常是这样的:
Prompt = 系统提示词 + 用户问题 + 检索到的原始文本片段(上下文)
例如:
系统指令:你是某领域助手,必须严格依据给定资料回答;
用户问题:例如“某产品的退货政策是什么?”;
检索上下文:从知识库里查到的 3~5 段相关文本。
大模型在这三部分基础上生成答案,它不需要知道向量值是多少、更不需要做向量相似度计算,那部分已经由向量数据库/检索层完成了。[blog.csdn]
所以可以一句话回答你的问题:
RAG 的存储与检索用的是“向量数据”;
但喂给大模型的是“原始的文本内容(或者表格、结构化片段)”,不是向量本身。