从文档到答案:RAG 工作原理

发布: (2026年2月23日 GMT+8 02:48)
4 分钟阅读
原文: Dev.to

Source: Dev.to

RAG 索引

索引阶段将原始文档转换为结构化的向量表示,以便后续使用相似度搜索高效检索。

architecture diagram of RAG Indexing

1) 文档摄取与预处理

第一步从摄取、清洗并将数据转换为合适的格式开始。这涉及将原始数据从 Bronze 层转化到 Gold 层。

RAW DATA

INTRODUCTION TO DATA SCIENCE!!!
• DATA is everywhere in today's world  
• MACHINE learning helps in prediction  
• tools like PYTHON , R , SQL are used

AFTER PREPROCESSING AND NORMALISATION

Section: Introduction to Data Science  
Content: Data is everywhere in today's world. Machine learning helps in prediction. Tools like Python, R, and SQL are used.

2) 切块(Chunking)

切块指将大段文本拆分为更小的片段,以便计算机更有效地理解和搜索。

常见的切块策略包括按以下方式拆分:

  • 主题
  • 标题
  • 段落
  • 使用分隔符(如 \n\n.)的递归模式

查看更多关于 chunking strategies 的信息。

每个块会附带元数据,如 chunk_idchunk_index 等。对于大规模数据,元数据可以保存为 JSON 或 Parquet 文件。

示例 chunk.json

[
  {
    "chunk_id": "ml_intro_chunk_0001",
    "chunk_index": 0,
    "doc_id": "machine_learning_basics",
    "section": "Introduction to Machine Learning",
    "content": "What is AI, Types of Algorithms",
    "page_start": 1,
    "page_end": 1,
    "char_start": 0,
    "word_count": 6,
    "language": "en"
  }
]

3) 向量化(Embeddings)

真正的核心在这里:所有数据都会被转换为数字,以便计算机理解其含义。

举例来说,将句子 “The dog and cat are friends” 嵌入到 3 维空间:

vector representation in 3 dimension

在实际应用中,向量拥有数千个维度。嵌入完成后,每个文档块都会成为存储在 向量数据库 中的 向量嵌入,从而完成索引阶段。

RAG 查询

当用户提交查询时,首先使用与索引时相同的模型将其转换为嵌入。检索到的结果随后传递给 LLM 进行输出生成和推理。

Query Processing Diagram

步骤 1:将用户查询转换为嵌入

用户查询使用创建文档嵌入的同一模型转换为向量嵌入。

步骤 2:相似度搜索

查询向量与向量数据库中所有存储的文档向量进行比较。使用余弦相似度,系统选取相似度最高的前 k 个块并将它们转发给 LLM。

示例

用户提问:“算法有哪些类型?”

系统将查询向量与存储的块进行比较,例如:

  • 什么是 AI
  • 算法的类型
  • 计算机历史

算法的类型 获得最高相似度分数,并被传递给 LLM。

步骤 3:LLM 响应生成

LLM 接收:

  • 原始用户查询
  • 检索到的文档块(如果有)

它将检索到的内容附加到查询上下文中,并生成最终答案。


我正在一步步学习 RAGAgentic AI。如果这帮助你更好地理解了整个流程,欢迎点赞或关注,我会继续分享我的学习之旅。

0 浏览
Back to Blog

相关文章

阅读更多 »