RAG 解释来源和基本 (中文 (Chinese Simplified))

RAG 解释来源和基本

Saturday, 22 November 2025

//

9 minute read

曾经搜索过“"”部署指南@"}(即使有)'}关于 “"”的一篇文章 有关“MS K4”和“生产”的文章 *"?“RAG @(Retrieval-“Auglied Pagement Generation+)”通过理解“,”来解决这个问题,而不只是关键字 •.}这一系列展示了RAG是如何在“hangle",}下如何工作的?

一. 导言导言 导言 导言 导言

📖系列导航 这是RAG ( -Retreival- -Auged Generation的“I)”系列中的“:”部分。

RAG '}但这里的' *这技术开启了远不止于 AI talkbots.*的机遇。 它授权网站进行语义搜索 ,}内容建议=,}写作援助,}和知识管理

双重性 RAG 可以帮助客户 @(#Better search@,}准确解答 ) 或利用它们 {(} manipulate recommendation_,}埋藏负面评论 , 浮现高端内容). 区别在于 <'>}t the Technology—Qit's intá.}一个语义搜索来帮助用户找到他们真正需要的东西}MS K11 great}. 一个优先选择什么最能让你赚到钱,同时显示有助的<?《'》暗色版域=,}和它为什么理解这个方法如何管用

以下是RAGZ:的真相。 它听起来吓人 . 矢量嵌入?变异模型MS K2KPassesMSMK3,但和软件中的其他所有东西一样...

RAG分三步

  1. 将文字转换为数字 @ (\ embeddings@ MS K1\
  2. 查找相似的编号 @ ( vctor search@ MS K1
  3. 使用您找到的 & M(display 结果或种子到 LLM@ )}

剩下的是执行细节

本系列展示您如何建立使用 C# code@ .}无手动跳 . 没有假设. 只有碎片和它们是如何组合起来的\ .

你在这个系列中将学到什么?

  • 本篇文章=)@: RAG是如何来的,为什么重要?
  • 部分#2完整的技术架构和LLM内部
  • 部分#3建立有代码示例的实时系统

后来的, I'L会教你如何建立完整的RAG系统,包括#:

什么是RAG?

检索@- @ 推荐的一代 @ : 查找相关信息@,}然后使用它 @.

flowchart LR
    A[User Question] --> B[Retrieve Relevant Info]
    B --> C[Retrieved Documents/Context]
    C --> D[Generate Response]
    A --> D
    D --> E[Grounded, Accurate Answer]

    style B stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

没有RAG: 用户询问% → @% LLM 内存的猜想@→# 可能有幻觉

与RAG: 用户使用这些基于现实的 docs @ →}来查询相关文件@ MS K1LLM 答案

// Without RAG: Hope the LLM knows
var answer = await llm.GenerateAsync("How do I deploy Docker?");
// Risk: Might make up outdated or wrong steps

// With RAG: Give it the docs
var relevantDocs = await vectorSearch.FindSimilar("How do I deploy Docker?");
var context = string.Join("\n", relevantDocs.Select(d => d.Text));
var answer = await llm.GenerateAsync($"Context: {context}\n\nQuestion: How do I deploy Docker?");
// Result: Answer based on YOUR actual Docker deployment docs

关键洞察力: 单独知识存储@(search)来自推理 @(LILMMS K3}更新您的文档{,搜索停留当前=.不需要再培训.

RAG从哪里来的?

RAG以数十年的搜索和NLP研究为基础 了解这个历史有助于理解为什么RAG被设计成这样

传统搜索@(pre-2010s)

关键字“-”基于搜索@:

  • TF-IDF: 定期频率 @× 逆向文档频度 @MS K2 普通单词不重要
  • BM25“: 概率排序”“-”仍然是关键词搜索的基准
  • 模糊匹配:
    • 声音: 语音算法 @("#Smith @MS K2}匹配的@"_Smythe%")
    • Leveshtein 距离@:_编辑距离@(}有多少插件?
    • N-草丛用于部分匹配的 M:字符@ /}字序列

问题是什么? 相匹配 字符字符字符# , # 不是# 意思.搜尋"container controducation"你找到MS K3t MSSK4Docker Swarm}"除非有這些字

早期问题解答@(2010 @s)}

华生・(~IBM_, _2011):

  • 与基于规则的推理合并检索
  • 但需要大量手力 - 创制知识工程
  • 仍然严重依赖关键字匹配

阅读理解模型@: @%

  • 可以从提供的段落中提取答案
  • 但你必须先给他们正确的通道
  • 没有语义搜索可找到该段落

深层学习革命

变换器 @ (2017): @% ""只要你关注""

  • 能够理解背景的神经网络
  • 其后的一切基础

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}BERT(2018):

  • 语言背景理解
  • "BARBank"}("Bank@MSK11)意指不同事物 在 @MSK 2Birver Bank_"}对#"}储蓄银行="}
  • 能够生成包含含义的嵌入

GPT-2/3 □(2019/2020):

  • 能够产生一致案文的大语言模式
  • 但仅限于培训数据
  • 出现了幻觉问题

高密度矢量表解@:

  • 文本 @ →}在高空中有意义的数字@ MS K1维空间
  • 类似的意思@→附近的矢量
  • 这使语义搜索成为可能

10月#2019):

  • 麦克·刘易斯等人的双向和自动=-回归式变形器
  • 混合 BERT- 和 GPT- 的类似编码器
  • 接受过腐败文本培训的disoising 自动编码器,然后重建它
  • 极适合文本生成和理解任务
  • 成为RAG的基础

M2M-100 (纸本A{,}10月_2020):

  • 最初的多语种翻译模式@- @to @-}#many 多语言翻译模式
  • @100语直接翻译,
  • 2,200 语言方向 @(10#x 比先前的型号更多@)}
  • 显示的变压器可以处理大横交叉@ - @ 双语任务

真实的--世界性例子 @:_# 我的 神经机器翻译工具 当无法提供初级服务时,BART作为后备翻译模式用于初级服务@, 演示这些基于变压器的模型如何成为生产系统的实际构件_.

现代RAG的诞生

开创性纸"重新获取@ - @ 启动生成知识 < NLP 强化NLP任务 >由Patrick Lewis及Al-al-. (脸书AI Research=)正式推出,

他们结合了什么 :

  • ensense Passage retreserval @( @DPR)}\ -}学习的矢量表达式@,}不是关键字
  • BART 生成器 @-}(后继的2seq 模型) 来自 @MS K2
  • End - @to @- @end differentiable 建筑 #% MS K2# recreat and production 一起获取并生成

结果#: RAG系统的业绩远远超过了知识的更大模型 - 密集任务 同时效率更高 并更新了-

为什么RAG 爆破@(2023- @present_)#

ChatGPT, GPT}-4,和Claude 使RAG成为关键

  1. 幻觉问题 RAG在真实的文档中做出回应 . *
  2. 知识关闭 “-”LMS 培训了有关“2021”数据的培训。“MS K2”T知道关于“2024”事件的情况;“MSC4”RAG使用当前文件=“MSKO5”
  3. 私人数据 @-@LMs can'}可以访问您的公司 ' 内部 docs=.* RAG canMPK4*
  4. 费用成本 -+Fine-+ZA调整LMs是昂贵的 @($10QQQK-100+KQ+).+RAG是便宜的#(+存储@++嵌入=).}
  5. 可解释性 @-_RAG可以引证来源@,}使其可审计和可信

今天 (2024-2025): RAG是生产AI系统的实际标准,需要准确性和可审计性 . 每一大AI公司都提供RAG工具*.}

RAG如何工作 : *大图片

在深入探究技术细节前,

三阶段

RAG系统分三个不同阶段运行

阶段=1: 索引=+(One_-时间设置@)

flowchart LR
    A[Your Documents] --> B[Split into Chunks]
    B --> C[Generate Embeddings]
    C --> D[Store in Vector DB]

    style C stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

发生什么事了?

  1. 使用您的知识库@(docs,博客posts @,手册_)
  2. 分割成可控块 * @ (_ politices\ MS K1}区域@ )*
  3. 将每个块转换为矢量嵌入的“% (” 数数中的矢量@)
  4. 将矢量存储在为相似搜索而优化的数据库中

密钥概念@: @% 类似的含义产生相似的矢量@,,所以 @"#docker contracting"和{"acontainerization popolitium_"最终在矢量空间*.中紧密相连。

阶段“2:检索” “(每个查询”“MSSK2”

flowchart LR
    A[User Question] --> B[Generate Query Embedding]
    B --> C[Search Vector DB]
    C --> D[Top K Most Similar Chunks]

    style B stroke:#f9f,stroke-width:2px
    style C stroke:#bbf,stroke-width:2px

发生什么事了?

  1. 用户问问题
  2. 将问题转换为用于索引的矢量 {(}%same 模式
  3. 在数据库中查找最相似的矢量
  4. 返回上方 K 最相关的块@ ( @ 通常为\ 3-10)} *

为什么它的工作原理": “"”“我如何部署集装箱? ”“?"”“ @(Qquery)”在语义上类似于多克部署的块块?”“,”“即使字词不尽相同,“MS K5”也是一样的。

阶段: 3: 一代: I( 每个问题:

flowchart TB
    A[User Question] --> B[Build Prompt]
    C[Retrieved Context] --> B
    B --> D[LLM]
    D --> E[Generated Answer with Citations]

    style B stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

发生什么事了?

  1. 选择用户@' @%s 问题
  2. 取回的上下文块
  3. 构造一个即时Q: @ "_ profilen this con上下文@ MS K2 回答这个问题 @ MPK3}
  4. 发送到 LLM 生成
  5. 法学硕士根据所提供的背景提供答案

神奇的魔力 它只能合成和解释 '提供的东西

简单示例

让'通过系统追踪查询@:

用户询问@: @% “"”我如何使用多克作曲“?"”?

步骤 @1 @ @ - @ retreival@: @

Query embedding: [0.234, -0.891, 0.567, ...]

Search vector DB for similar embeddings...

Retrieved chunks:
1. "Docker Compose is a tool for defining multi-container applications..." (similarity: 0.92)
2. "To use Docker Compose, create a docker-compose.yml file..." (similarity: 0.87)
3. "The docker-compose up command starts all services..." (similarity: 0.83)

步骤2 - "一代" :

Prompt to LLM:
"Context:
[1] Docker Compose is a tool for defining multi-container applications...
[2] To use Docker Compose, create a docker-compose.yml file...
[3] The docker-compose up command starts all services...

Question: How do I use Docker Compose?

Answer (use the context above):"

LLM Response:
"To use Docker Compose [1], start by creating a docker-compose.yml file [2] that
defines your services. Then run 'docker-compose up' to start all services [3]..."

结果#: 准确回答,从您的文档中隐含引用@. @%

RAG vs

了解何时使用RAG {(}和不使用})}要求将其与替代品比较=.}

RAG vs . Fine-Tuning

+Asspect@ +RAG# +Fine @-+Tining# }(《星际迷航》)
知识更新 @ @ instant@(}只是更新知识库 #)# #需要再培训$ #
费用成本 @ 低 ( 储存 I+ 嵌入) *# 高 GPU 训练时间*
准确性 @ 以来源为基地 * 能产生幻觉*
自定义 “ ”限量检索“ 深度模型适应”
可解释性 @(_black box@)}{ } 引用来源: ) MS K3低 MSk4黑盒#MSK5
最佳 @ Oknown-}集约任务# Style/Final适应@

何时使用 Fine@ - @ Tuning @ MS K1

  • 您需要模型来学习 样式风格样式样式 或 格式格式
  • 您有一个大@ , @ 干净的数据集
  • 您需要模型内部化 模式型式不是事实
  • 让GPT像莎士比亚一样写作

何时使用 RAG: @

  • 你需要 事实准确性 引号
  • 您的知识基础变化频繁
  • 您拥有私人数据@ / @ 专有数据
  • 成本和简单问题
  • 例如:: 客户支持聊天室@( @my company @'_%s docs changes change

可以将两者结合起来吗? ? 是! Fine-Tune 用于样式},RAG 用于事实=.

RAG vs@ . @ 长内框窗口

现代LLMs夸耀着巨大的上下文窗口@( @GPT-4:} @128K massigns{,}{克劳德•:}#200}♪Kmatters_).}为何不把你的文档全部丢入上下文□?

长期问题

  1. 费用成本@ : 标语尺的标定比例, 每个查询加起来都快
  2. 时间间隔@ :_ 正在处理 *\ MPK1} K 神令需要时间
  3. 迷失在中间:LMs在长期环境中努力使用信息。
  4. 稀释相关信息被埋在噪音中
  5. 实际限制: 您可以在上下文中适合您的整个公司@'}♪ docs Docs in context

当长上下文有意义时 @ : @ @

  • 单大文档 @ ( @ e @ MPK1} g.,} 分析合同@ MS K3
  • 所有的东西都是相关的 @ ( @ no 需要过滤@ MS K1} @
  • 成本是否值得关注?
  • 低查询量

**当RAG说得通时 : ***

  • 大型知识库
  • 需要找到相关的子集
  • 高查询量 * @(}成本事项=%)
  • 实时更新知识

最佳做法:* 使用 RAG 选择最相关的内容@,}然后对子集使用长上下文\ .

RAG vs @ . 以示例提示

微小的- @ shot 提示@ ( pregnition 示例在快速的\ )} 是简单的基准

实例提示@: @%

Examples:
Q: What is Docker?
A: Docker is a containerization platform...

Q: How does Kubernetes work?
A: Kubernetes orchestrates containers...

Q: What is my new question?
A: [LLM generates answer]

限制

  • 限于上下文窗口中适合的内容
  • 实例的手工整理
  • 向大型知识库推广
  • 没有语义搜索@ - @% 您手动选择示例

RAG 改进 :

  • 自动找到最佳示例@ ( @ 通过相似性搜索\ )
  • 缩放至无限制示例@( @% 只有上方 K 被发送到 LLM @ @ )}
  • 查询“ (” 的适应性

您可以将RAG 视为“ "” 自动数@ MS K1 @ shot 在比例尺上提示的 RAG+."

混合搜索@:RAG @+传统搜索

您可以将RAG与传统的全@ - @ text 搜索结合起来, 使用对等列队合并 {(} _RRF).}

为何杂交?

  • 语义搜索@:_Great 用于概念匹配@("error profession *\ "}找到#"}例外管理 <")}{
  • 关键词搜索@:Great 用精确的术语表示 # (" Dockercompomee MS K2} _"_Enity Frameworl=")#
  • 混合混合物最好的两个世界
public async Task<List<SearchResult>> HybridSearchAsync(string query)
{
    // Run both searches in parallel
    var semanticTask = SemanticSearchAsync(query, limit: 20);
    var keywordTask = KeywordSearchAsync(query, limit: 20);

    await Task.WhenAll(semanticTask, keywordTask);

    var semanticResults = await semanticTask;
    var keywordResults = await keywordTask;

    // Combine using Reciprocal Rank Fusion
    return ApplyRRF(semanticResults, keywordResults);
}

private List<SearchResult> ApplyRRF(
    List<SearchResult> list1,
    List<SearchResult> list2,
    int k = 60)
{
    var scores = new Dictionary<string, double>();

    // Score from first list
    for (int i = 0; i < list1.Count; i++)
    {
        var id = list1[i].Id;
        scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
    }

    // Score from second list
    for (int i = 0; i < list2.Count; i++)
    {
        var id = list2[i].Id;
        scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
    }

    // Merge and sort by combined score
    var allResults = list1.Concat(list2)
        .GroupBy(r => r.Id)
        .Select(g => g.First())
        .OrderByDescending(r => scores[r.Id])
        .ToList();

    return allResults;
}

为什么RAG关系重大

现在,你明白什么是RAG=,}它来自哪里了吗? 与其它选择的比较如何?

大赦国际的民主化

  • 您不需要一个“ $100” K fine “ -” 调整预算
  • 你不需要一个ML工程师团队
  • 任何开发者都可利用现有工具建立区域咨询组系统

实际精确度

  • 幻觉是生产中LLMs的问题
  • RAG通过以真实文件作为回复依据来解决它
  • 引文使其可审计和可信

@ 3. @ 总是上传@ MS K1 @to @ MPK2#Date

  • 传统AI:培训,一旦□,知识被冻结
  • RAG: 更新您的文档@ , 知识即时更新
  • 快速关节关键关头@- @ 移动域名 @ (_ tech, @ news=,{ 规章} @)}

隐私与控制

  • 数据保存在您的基础设施中
  • 能够完全本地运行 @ ( @ 当地嵌入@ MS K1 @ 本地 LLM @ I+ 本地矢量 DBQ)}
  • 没有向 OpenAI 或其他云源提供者发送数据

-=YTET -伊甸园字幕组=- 翻译:

  • 储量是便宜的, 每GB=)
  • 嵌入式是廉价的( 折中法,折中率为 1000 文档MS K2
  • 比精细@-}调制或长上下文窗口便宜得多

6.-Versatile 应用程序

  • 语义搜索@(no LLM 需要 @!)
  • &A系统,引文
  • 内容建议
  • 书写助理
  • 知识管理 知识管理
  • 文件帮助者
  • 研究助理

从历史到实施

我们追踪到RAG' 进化

  • Pre-2010 @%s: 关键字搜索 @(字符@,}不是意指)
  • # 2010#@:#阅读理解@(}需要右路 #)#
  • 2017-2020: 变换器和嵌入器 @(}意指#→ 矢量@)
  • 2020现代RAG (retriev *+产生=)
  • 2023-_现在-=YTET -伊甸园字幕组=- 翻译:

从 MPK0 部件中的关键洞见@ info: tooltip

  • ROAG分离 知识储存 (Victor DB)來自 理由说明 (LLM)
  • 它解决幻觉问题, 以真实文件为基础回应
  • 它比精细更便宜 灵活 比微小
  • 对于大型知识库而言,它比长长的环境范围更管用
  • 它基本上在“"” 自动数@-}发号施令

三个-精神模式 :

  1. 将文字转换为数字 @ (\ embeddings@ MS K1\
  2. 查找相似的编号 @ ( vctor search@ MS K1
  3. 使用您找到的“ (” display 或 feed to LLM @ MS K1 ” 的内容

其它一切都是优化... .......

继续分割 & 2: @ 建筑和内部

你现在明白了 什么什么是 RAG 是, 为什么 这很重要 ,和 何处 它来自. 但是它是如何实际工作 在HANZ?}

内 **RAG 建筑和内部**我们深入探究技术细节 :

完整RAG输油管:

  • 集成策略 @,}嵌入生成器,矢量存储@)
  • 阶段 2: retregevval @(Qquery 嵌入@,}相似的度量=%,重新排位=)
  • 阶段性 3: 新一代 ( 快速建筑 MS K2 LLM参数 MSKO3 后期- product)

内部LLM=:

  • 什么是象征物,它们为什么对RAG很重要?
  • KV 缓存:}LLMs如何记住上下文
  • 上下文窗口和象征性管理战略
  • 优化区域咨询组的象征性效率和成本

技术深层潜水 :

  • 矢量数据库和相似性搜索算法
  • 嵌入模式和正常化
  • 保持环境的启动战略
  • C#中实用代码示例

继续分割 & 2: @ 建筑与内部

在“2,”部分之后,您% '将准备加入“ I3,”部分。 我们在此构建真正的系统@,解决共同的挑战 @,并探索诸如 HyDE},多-Qquery RAGMS K7和上下文压缩.等先进技术

资源资源资源 资源和资源资源资源

基础文件

继续读取@: @%

此序列中的下一集 @ : @

继续到 & M2 @ →

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.