不止于向量:RAG系统中“文本投喂”的精度革命 基于您提供的思考脉络我将这些碎片化的洞察拓展为一篇面向RAG检索增强生成应用开发者的技术博客。文章不仅保留了您对“文本-向量-大模型”三角关系的敏锐观察还深化了“Query改写”与“数据路由”的工程实践。不止于向量RAG系统中“文本投喂”的精度革命向大模型发送的永远是文本向量检索只是一座桥。桥的对岸是让大模型“看得懂”且“看得全”的工程艺术。一、一个常被误解的常识大模型不认识向量在RAG的炫目概念之下有一个朴素却极易被忽略的真相无论我们在检索阶段如何花式计算余弦相似度、使用HNSW索引最终喂给大模型LLM的永远是原始的文本字符串而非浮点数向量。向量相似度检索的角色不是“智能理解”而是**“文本寻址”**——它像图书管理员根据您的索书号Query向量找到最可能相关的几本书文本块然后将这些书的内容原文搬到LLM的桌面上。这个定位决定了两个关键约束上下文窗口是硬通货即便如GPT-4 Turbo拥有128K窗口塞入过多无关文本也会稀释注意力浪费推理算力。检索精度决定生成上限若检索阶段召回的是“噪音”LLM再强也难以“无米之炊”。二、小文档的“躺赢”策略全量投喂当知识库的文档规模较小例如总Token数远低于模型上下文窗口的30%时全量发送反而是最优解。优势规避了分块带来的语义断裂保留了完整的上下文逻辑如简历中的时间线连贯性。场景个人知识库、单份简历分析、单个会议纪要总结。代价随着文档增长全量发送的线性成本会迅速失控。此时必须启用“检索-裁剪”模式。三、检索失效的经典困境当“问题”与“内容”玩起躲猫猫您敏锐地指出了RAG的一个致命痛点——文本表层相似度无法映射深层意图。反例剖析用户提问“我以上信息中看看我是什么样的人”向量检索困境该Query的核心词是“什么样的人”属于抽象人格画像。而知识库中的字段是“简历”“技能”“工作笔记”。词汇重叠度极低向量空间中的距离可能疏远。结果检索可能只召回“姓名”“年龄”这类浅层信息LLM收到的上下文贫瘠只能泛泛而谈。正例优化改写后提问“从简历、基本信息、技能、工作经历、聊天内容、工作笔记等信息中分析一下我的个人画像看看我是怎样的人。”为何有效显式枚举数据源增加了“简历”“技能”“工作笔记”等强关联词提升了与文档标签的TF-IDF及向量重合度。明确任务指令“分析个人画像”将抽象意图转化为具体的“信息提取综合推断”任务帮助检索模块更精准地锚定相关段落。四、工程化解法Query改写与多路召回仅靠用户自觉优化提问不现实。生产环境中我们通过以下手段系统性地规避“答非所问”策略实现方式作用Query语义改写使用小模型如BERT或LLM自身将模糊问题扩展为结构化任务描述弥补用户提问的“信息残缺”HyDE假设性文档嵌入让LLM先根据问题生成一个“虚构答案”再用该答案作为检索Query以“答案”找“答案”对齐语义空间关键词增强从Query中抽取实体同时进行BM25全文检索 向量检索合并结果兼顾词汇重合与语义相似元数据过滤在检索前先根据用户ID或文档类型如“简历”字段做预过滤缩小搜索空间避免跨域干扰五、实战案例构建“个人画像分析”的RAG Pipeline针对您提出的场景一个鲁棒的方案设计如下预处理阶段将简历、工作经历、笔记分别切块并附加元数据标签source_type: resume/chat_log。检索阶段接收用户提问“我是什么样的人”改写器自动将问题扩展为“提取并总结该用户的职业技能、性格倾向、成长轨迹及人际关系特征”。多路召回对改写后的Query执行向量检索 关键词检索并按source_type加权例如“工作笔记”权重高于“基本信息”。合成阶段将召回的前K个文本块按相关性排序拼装为Prompt明确指示LLM“以下为来自该用户不同维度的原始数据请综合提炼出个人画像若某方面信息不足请标明。”六、反思向量不是万能钥匙文本工程才是基座当RAG系统给出“答非所问”的结果时开发者第一反应往往是调参、换Embedding模型。但更常见的病根在于数据分块策略与问题类型不匹配如按固定长度切分破坏了工作经历中的项目完整性未对用户Query进行意图识别与路由如“画像”类问题应触发摘要型检索而非事实型检索缺乏重排序Rerank层让最相关的3个文档淹没在次相关的10个文档中。最终大模型的生成质量严格遵循“垃圾进垃圾出”的铁律。当我们惊叹于LLM的涌现能力时别忘了它最需要的不是向量而是一份经过精心策划的、恰到好处的“文本参考资料”。后记下一次调试RAG应用时请先将目光从余弦相似度分数上移开打开最终发送给LLM的Prompt字符串——那里面藏着所有答案的真相。原始思考实际给大模型的永远都是文本而非向量向量相似对算法只是计算相似度的工具只是将跟问答有关系的这部分内容作为参考内容 发送给大模型因为大模型一次请求的数据有限制即使没有限制 太多无用的数据会消耗大模型的算力。所以只提取跟问答相关的文本发送给大模型让大模型整理并回答如果文档比较小那么每次全部发送过去也行。基于相似对算法比对那么如果要文档 首先得尽可能将有用的信息匹配到这时候大模型的回答才是有效的。也更有效。反例如果问的问题 从文本上 跟内容并不匹配 这就会导致 答非所问。基本信息简历文件基本信息技能工作经历聊天内容工作笔记 等信息比如我以上信息中看看我是什么样的人这样问题估计匹配不到什么信息这样发给大模型的信息就少。应该这么说从 简历文件基本信息技能工作经历聊天内容工作笔记 等信息中分析一下我的个人画像看看我是咋样的人。这样说应该会匹配的不少数据