首页 > 教程攻略 > ai资讯 >RAG是如何工作的?

RAG是如何工作的?

来源:互联网 时间:2026-08-24 14:22:21

先来聊聊RAG——检索增强生成。这玩意儿其实是NLP领域一个相当前沿的玩法,核心思路就是把信息检索和文本生成打包到一起,让模型回答问题时既不是瞎编也不是照本宣科,而是能真正“查资料”再“写答案”。下面咱们就从头到尾拆一遍,看看它到底是怎么工作的。

一、知识库如何导入

知识库是RAG的根基,质量直接决定最终表现。实际落地时,知识库装的东西五花八门:文档、网页、数据库记录,结构化和非结构化数据都有。导入之前得先收拾利索。

1. 数据收集

数据来源很灵活——公司内部数据库、公开数据源、爬虫抓的网页都行。数据类型嘛,主要是文本(文章、邮件、文档),但也可能包含结构化记录(表格),甚至多媒体文件。不过RAG吃的主力还是文本。

2. 数据预处理

收来的数据不能直接扔进去,得先洗一洗:

  • 清洗

    :去掉HTML标签、特殊字符这些噪音和冗余。

  • 格式化

    :把不同来源的数据统一成一种格式,方便后续处理。

  • 分段

    :长文档砍成短片段,检索起来更快,也更精准。

3. 数据导入

预处理完的数据,通常转成JSON或XML这类通用格式,然后用API或者批量工具灌进知识库。

二、知识库存储在哪里?向量数据库的存储原理

数据存哪是个关键问题。传统关系型数据库(比如MySQL、PostgreSQL)处理结构化数据挺在行,但RAG的场景是海量文本+高效检索,所以向量数据库才是正解。

1. 向量数据库简介

说白了,向量数据库就是专门用来存和查高维向量的,常见的有FAISS、Milvus、Pinecone。它能快速算向量之间的相似度,支持高效的近似最近邻搜索(ANN)。

2. 向量数据库的存储原理

核心原理并不复杂:把文本通过嵌入模型(比如BERT、GPT)转成高维向量,然后建索引结构来加速查找。关键组件有三:

  • 向量表示

    :文本转成向量。

  • 索引结构

    :倒排索引、HNSW图、K-D树等,目的就是快。

  • 相似度计算

    :欧氏距离、余弦相似度,挑一个来算距离。

3. 向量数据库示意图

RAG是如何工作的?

上图把流程画清楚了:文本先向量化,然后存进索引,查询时一算相似度就能找到最接近的结果。

三、导入的文本如何拆分并存入向量数据库

长文本不能整个塞进去,得拆成小段再存。这一步决定了检索的颗粒度。

1. 文本拆分策略

拆法可以灵活选:

  • 按段落

    :一段一个块,适合信息比较独立的场景。

  • 按句子

    :更细粒度,适合需要精确匹配的问答。

  • 按固定长度

    :比如每500字一段,保证每块长度均匀。

2. 文本向量化

拆好的片段要通过嵌入模型变成向量。BERT、RoBERTa、GPT这些模型都能用,它们把文本映射到高维空间,语义相似的片段在空间中就挨得近。

3. 向量存储

存进向量数据库的过程分三步:

  • 向量生成

    :片段送进模型,吐出向量。

  • 向量索引

    :把向量加到索引结构里,方便之后快速找。

  • 元数据存储

    :除了向量本身,还要记下原始内容、来源、时间戳这些信息。

四、用户的问题如何被查询出来

用户提一个问题,系统得先把它转成能检索的形式。

1. 问题向量化

跟文本块一样,用户问题也要用同样的嵌入模型转成向量——这一步对上了才能算相似度。

2. 向量检索

算相似度两个常用指标:

  • 欧氏距离

    :距离越小越相似。

  • 余弦相似度

    :夹角越小(值越大)越相似。

向量数据库靠HNSW图这类索引加近似最近邻算法,刷刷几毫秒就能找到最匹配的那些向量。

五、检索结果如何送到大模型并生成回答

查到的相关文本块,要喂给生成模型(比如GPT-4)去“消化”并写出答案。

1. 检索结果处理

常见的两种做法:

  • 拼接文本块

    :把几个相关块拼成一个长文本,作为上下文。

  • 选择最相关块

    :只挑一两个最相关的,减少模型处理负担。

2. 生成模型回答

模型接到上下文和用户问题后,先理解,再生成自然语言回答。这个过程结合了检索到的知识,所以答案既有依据又流畅。

六、如何优化Prompt以达到最佳结果

Prompt设计得好不好,直接影响回答质量。这里有几个原则可参考:

1. Prompt设计原则

  • 明确具体

    :别含糊,把查询和上下文说清楚。

  • 信息充分

    :关键信息都塞进Prompt,别让模型去猜。

  • 简洁易懂

    :太长太绕反而降低理解效率。

2. Prompt示例

比方用户问“如何优化SEO?”,一个合理的Prompt可以这样写:

用户的问题是“如何优化SEO?”以下是相关的知识:
1. SEO(Search Engine Optimization)是一种提高网站在搜索引擎结果中排名的方法。
2. 关键字优化是SEO的重要策略,通过选择和使用合适的关键字,可以提高网站的搜索引擎排名。
3. 内容质量和外部链接也是影响SEO的重要因素。
请根据以上信息回答用户的问题。

3. Prompt调优

调优没有终点。A/B测试和用户反馈是两个常用手段:跑对比实验看哪个Prompt效果好,或者收集用户反馈持续迭代。

结论

RAG把检索和生成结合起来,既解决了传统生成模型知识更新慢、容易“胡诌”的痛点,又保留了生成模型的灵活性。从知识库导入、向量存储、文本拆分、问题检索到最终生成,每个环节都有讲究。只要合理设计并持续优化,RAG系统在知识问答、客服、内容生成等场景里能发挥很大的实用价值。