RAG核心概念

前提

目前网络上针对大模型有两种声音,一种是说AI展现出了惊人惊叹的强大能力,仿佛无所不能,可以解决博士级别科学问题。另一种声音说AI就是资本炒作,出现胡说八道的现象。其根源就是AI的"幻觉"问题,也就是业界所称的"AI Hallucination"现象。

AI出现"幻觉"现象的原因

  • 主要因素是其工作原理中的概率生成机制,在生成文本时,大型语言模型依赖统计概率来预测下一个最可能的词语,而不是基于事实进行查询,这可能引致信息错误。
  • 此外AI的回答局限在训练数据的范围内,大模型并不掌握你的个人信息或公司内部的私有信息,对于超出训练数据范围的问题,就容易胡说八道。

解决方法

现阶段基于Transformers架构的模型还无法彻底杜绝AI幻觉,不过给大模型外挂知识库就可以补齐知识短板,就能有效减少AI幻觉问题,这一方法就是RAG(Retrieval-Augmented Generation):检索增强生成。

RAG的工作原理

  1. 文本分块:将文本分割成有意义的片段或块的过程。对知识库文档进行分割是一个至关重要的步骤。文档分割的质量直接决定了检索的准确性和生成模型的效果。它能显著改善信息检索和内容生成效果,提供更精准相关的结果。

  2. 生成向量嵌入:这些文本块将由Embedding Model(嵌入模型)转换为向量。Embedding Model是一种机器学习模型,它可以将高维输入数据如文本、图像,转换为低维向量。在RAG中,嵌入模型将文本块转换成向量。这些向量捕捉了文本的语义信息,从而可以在海量文本库中检索相关内容。有多种模型可以用来生成向量嵌入(vector embeddings)。例如:可以使用OpenAI的text-embedding-3-large模型。不同模型生成的数值会有所不同。

    在这里我解释一下向量嵌入:向量嵌入vector embeddings是用一组数值表示的数据对象在多维空间中捕捉文本、图像或音频的语义和关联,可以让机器学习算法能够更轻松的对其进行处理和解读。因为向量嵌入能够以数值形式捕捉对象间的语义关系,所以我们可以通过向量搜索(也称相似性搜索)在向量空间中来查找相似对象,也就是与之距离最近的邻居。
    例如:Cat、Kitty、Apple,将他们转换成向量嵌入,你会发现Cat和Kitty的向量嵌入在数值上相近,且在向量空间中距离更近。在数值上相近的向量嵌入在语义上也是相似的。

  3. 向量嵌入存储到向量数据库:一些专业厂商提供高性能的向量数据库解决方案,比如:Pinecone、milvus、Chroma、Redis、drant等。

    向量数据库和传统数据库有什么区别?

    • 传统数据库主要用于存储结构化数据,数据通常以行和列的形式组织,适用于存储明确的数据类型,如整数、字符串、日期等。
    • 向量数据库专注于存储和检索高维向量数据,通常用于处理非结构化数据,如图像、文本和声音经过特征提取后的向量表示。
    • 向量数据库侧重于相似性搜索,它通过语义理解来检索相关结果,不依赖精确匹配来检索相关搜索结果,对拼写错误和同义词有较好的包容性。
    • 而传统数据库通过精确匹配关键词来检索数据,适用于结构化数据的高效查询。
  4. 用户提问问题

  5. 用户问题生成向量嵌入

  6. 检索:将问题向量与向量数据库中的其他向量进行比较,执行相似性搜索,找到最相关的数据条目。检索本质上就是在向量空间中寻找与查询向量最相似的邻居,通过计算"查询向量"与数据库中其他向量之间的距离找到距离最近的邻居,从而返回最相关的对象。

    怎样衡量向量嵌入的相似性呢?

    • 在相似性向量搜索中,最常用的度量距离的指标有,欧式距离(Euclidean Distance)、余弦相似度(Cosine Similarity)、点击相似度(Dot Product Similarity)。
    • 欧式距离:用于测量高维空间中两点之间的直线距离。
    • 余弦相似度:通过计算两个非零向量的夹角的余弦值来衡量它们之间的相似性。
    • 点击相似度:计算的是两个向量的模长乘积与它们之间夹角的余弦值的乘积。点击会受到向量的长度和方向的影响。
  7. Top K text chunks:系统检索出排名靠前的K个文本片段

  8. ReRanking:在检索出的Top K文本片段基础上进一步根据与用户查询的相关性和上下文适配度进行重新调整,即重新排序。

    这里举个例子:比如说Top K text chunks阶段检索出了10个相似的文本片段,但是他们的初始排序可能不是最优的,即相似性不是从高到底,然后我们将这10个文本块送入重排序模型(re-ranking model),重新进行排序,进而优化他们与用户查询的相关性适配程度,在已完成重新排序的文本块里,筛选出排名靠前的5个文本块,之后将作为"上下文相关信息(context)"发送给大模型

  9. 生成提示词模板(Prompt Template):把外部知识库中检索到的相关信息(context)和用户问题融合在一个提示词模板(Prompt Template)中。

  10. 将提示词模板发送给大模型

  11. 大模型生成答案发送给用户

相关推荐
陈广亮11 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬11 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia12 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区12 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两15 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪15 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat2325515 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星15 小时前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能
lnix15 小时前
当“大龙虾”养在本地:我们离“反SaaS”的AI未来还有多远?
人工智能·aigc