AI 技术岗面试题库
覆盖 AI Agent 架构、RAG 核心技术、高级优化、LangChain/LangGraph 框架实战、NLP 基础、模型训练优化等 17 大方向,按难度分层标注,附深度解析与对比表格,适合不同级别技术岗面试备考。
Agent 架构RAG向量数据库
LangChainLangGraphMixed Search
RerankPrompt 工程MCP/A2A
模块 1
AI Agent 基础架构
五节1.1 OpenClaw 架构
⭐ 核心概念Q1OpenClaw 的核心架构定位是什么?
OpenClaw 是开源的多渠道 AI 网关(Multi-channel AI Gateway),本质是"AI 的操作系统":中枢调度层将 LLM 推理能力翻译为对 OS、API、硬件的实际控制;模型无关——所有模型接入仅需配置 API Key 和 Base URL;生产就绪——分钟级上线,原生支持 15+ IM 平台。
Q2OpenClaw 的 Agentic Loop 具体包含哪几个步骤?
基于 ReAct 范式的六步循环:Load(加载会话历史、记忆、系统提示词)→ Call(上下文与工具列表发给 LLM)→ Parse(解析 LLM 返回的文本或 tool_use 指令)→ Execute(执行对应工具并获取结果)→ Append(执行结果追加至上下文)→ Loop(返回 Call 步骤,持续迭代直至输出最终响应)。
Q3Gateway 和 Agent 运行时的职责分别是什么?
Gateway:HTTP/WebSocket 入口网关,负责鉴权、限流、幂等去重、多平台消息统一格式化,将标准化
MsgContext 派发给 Agent。Agent:运行时主体,负责路由匹配、上下文组装、执行 Agentic Loop、状态落盘。二者解耦,Gateway 默认绑定 127.0.0.1 不暴露公网,安全边界清晰。Q4OpenClaw 的技能系统如何解决上下文爆炸问题?
采用渐进式披露:元数据层(YAML frontmatter)始终轻量加载;指令层仅在语义匹配命中时才加载完整技能;资源层(脚本/模板等)按需拉取。配合会话压缩(Compaction)、Memory Flush 预存关键信息、Context Guard 截断大 tool result 等多重机制协同控 Token。
Q5OpenClaw 的系统提示词是如何生成的?
每轮动态拼装。来源包括:工作空间文件(
AGENTS.md 基线规则、SOUL.md 人格语气、TOOLS.md 使用指南、USER.md 用户偏好、IDENTITY.md 身份配置);动态内容(语义搜索出的记忆、相关 Skills、会话历史、自动生成的工具定义);插件钩子 before_prompt_build。所有行为调整只需编辑 Markdown 文件,无需改源码。Q6Agentic Loop 中工具调用失败时 OpenClaw 如何应对?
LLM 自主决策:错误信息反馈给 LLM,由其决定重试、换工具或向用户报错。系统兜底:超时中断;用户新消息可强制取消当前循环;Context overflow 三级应对——先 Compaction 压缩历史 → 再截断过大 tool result → 最后才报错建议
/reset。Q7OpenClaw 曾发生过哪些重大安全事件?如何加固?
2026 年 1 月底 Shodan 暴露事件:数百个无认证(
auth: none)实例裸露公网,导致对话泄露、API Key 窃取、命令越权执行。加固措施:移除无认证选项,强制 Token/密码认证;新增 7 层工具策略管道(profile→group 逐级收窄);Owner-only 工具隔离、子 Agent 工具白名单。Q8OpenClaw 与 LangChain、AutoGPT 的核心定位差异?
| 项目 | 定位 | 特点 | 适用场景 |
|---|---|---|---|
| OpenClaw | 生产级部署应用 | 分钟级上线、15+ IM 平台、模型无关、无需编码 | 快速落地 AI 助手 |
| LangChain | Python 开发框架 | 定制化 RAG/AI 流水线、需大量胶水代码 | 定制化 AI 应用开发 |
| AutoGPT | 实验性自主 Agent | 易失控、Token 难控 | 研究原型,不推荐生产 |
1.2 ReAct 框架
⭐ 核心概念Q1ReAct 是什么?核心原理是什么?
ReAct(Reasoning and Acting)是结合推理与行动的 Agent 框架。四步循环:Thought(分析问题,决定是否用工具)→ Action(选择并调用工具)→ Observation(接收工具结果)→ 循环迭代(结果反馈回上下文,继续下一轮推理与行动)。
Q2ReAct 和 Chain-of-Thought(CoT)有什么区别?
| 特性 | CoT | ReAct |
|---|---|---|
| 推理方式 | 线性推理 | 推理+行动交替 |
| 外部信息 | 无法获取 | 可主动调用工具获取 |
| 适用场景 | 静态知识推导 | 需要实时/外部信息的任务 |
| 纠错能力 | 有限 | 可根据观察结果动态修正 |
Q3ReAct 如何避免大模型产生幻觉?
通过引入外部工具的"行动-观察"机制,使模型能够获取真实世界的数据(如天气、时间、搜索结果等),减少依赖内部知识进行猜测,有效降低幻觉和错误推理。
Q4请举一个 ReAct 的实际执行例子。
查询"今天杭州的天气":Thought → 需要调用天气 API;Action →
WeatherAPI[Hangzhou, today];Observation → 21°C,多云;Thought → 已获得信息,可生成回答;最终回答:"今天杭州多云,21°C,适合外出,但记得备伞。"Q5ReAct 的典型应用场景有哪些?
问答系统(尤其需实时信息)、自动化客服、AI 代理、代码生成与调试、科学研究辅助、游戏智能体、需要与外部工具集成的任务自动化系统。
1.3 A2A 协议
⭐ 核心概念Q1A2A 协议的五大设计原则是什么?
自主性(Agent 为自主决策个体)、标准化(基于 HTTP、SSE、JSON-RPC 等现有标准)、安全性(企业级 AuthN/AuthZ)、异步性(SSE 实时推送进度)、多模态(支持文本、音频、视频等数据流)。
Q2A2A 协议与传统 API 调用有何区别?
| 特性 | 传统 API | A2A 协议 |
|---|---|---|
| 交互模式 | 请求-响应,调用方主导 | 双向、异步、自主协作 |
| 智能体关系 | 被动调用工具 | 像同事一样协作 |
| 流程控制 | 调用方完全控制 | 智能体自主协商任务流程 |
| 内部实现 | 需要了解接口细节 | 无需共享内存或了解对方实现 |
Q3A2A 协议的目标是什么?
打破不同 AI 智能体框架之间的信息孤岛,建立去中心化的 Agent 互联网,实现跨平台、跨厂商的智能体在安全、标准的环境下进行自主、长期、多模态的协作。
Q4为什么 A2A 协议强调"建立在现有标准之上"?
基于 HTTP、SSE、JSON-RPC 等成熟技术:避免重复造轮子;企业可低成本将现有系统接入 A2A 生态;无需重构基础设施,提升兼容性和落地效率。
Q5A2A 协议如何支持长时间运行的任务?
通过异步通信机制:利用 SSE(服务器发送事件)实时推送任务进度;用户无需阻塞等待,可随时查询状态或获取中间结果;适用于代码生成、科研分析等耗时较长的场景。
1.4 Manus 智能体
⭐ 核心概念Q1Manus 是什么?与其他 AI 助手的主要区别?
Manus 是中国团队 Monica.im 于 2025 年 3 月推出的全球首款通用型 AI 智能体。核心区别:传统 AI 助手仅提供对话建议,Manus 能自主完成端到端任务——具备规划、决策、调用工具、状态管理和结果交付能力,真正实现"交付成果"而非"给出建议"。
Q2Manus 是如何完成一个复杂任务的?
规划器用大模型生成整体计划并拆分子任务 → 执行器由不同智能体或工具(Claude、Qwen 或专用脚本)分别执行 → 状态管理维护统一状态,根据中间结果动态调整流程 → 结果整合输出完整成果。用户可在 Web 控制台回放整个 Trace。
1.5 Computer Use
⭐ 核心概念Q1Computer Use 是什么?
Anthropic 在 Claude 3.5 Sonnet 中推出的功能,使 AI 具备操作计算机的能力:通过模拟鼠标点击、键盘输入等方式与操作系统和应用程序交互,实现从"文字对话"到"实际操作"的跨越——如自动打开浏览器搜索信息、填写表单或处理文件。
Q2Computer Use 的核心原理是什么?
三大核心技术:操作系统级 API(自然语言指令转化为具体操作,Windows/macOS 系统调用)、多智能体协作(任务规划代理 + 工具调用代理 + 验证代理形成自动化流水线)、OCR + 语义理解(识别屏幕内容并精准定位操作目标)。
Q3Computer Use 和传统 RPA 有什么区别?
| 特性 | 传统 RPA | Computer Use |
|---|---|---|
| 流程定义 | 预先设定固定流程 | 基于大模型理解自然语言指令 |
| 适应性 | 界面变化需重新配置 | 可动态规划任务路径 |
| 智能程度 | 规则驱动 | 语义理解 + 视觉识别 |
| 开发成本 | 需硬编码规则 | 无需硬编码,可应对新任务 |
模块 2
RAG 核心技术
五节2.1 RAG 基础原理
⭐ 核心概念Q2RAG 是否需要重新训练大模型?
不需要。RAG 的最大优势就是无需微调或重新训练,通过检索外部知识并增强输入提示的方式动态扩展模型的知识,降低了维护成本和技术门槛。
Q3RAG 和模型微调相比有什么优势?
| 特性 | RAG | Fine-tuning |
|---|---|---|
| 知识存储 | 外部知识库 | 模型参数中 |
| 更新方式 | 修改知识库即可 | 需重新训练 |
| 成本 | 实施成本低、每次调用有开销 | 训练成本高、使用后成本低 |
| 适用场景 | 知识频繁更新 | 风格/行为模式固定 |
| 溯源能力 | 支持答案溯源 | 难以溯源 |
Q4RAG 为什么能减少大模型的幻觉?
因为 RAG 为大模型提供了来自可信知识库的具体上下文信息,模型在生成答案时有据可依,不再依赖记忆中的模糊模式,从而降低了凭空捏造信息的可能性。
Q5RAG 中的向量化指的是什么?
使用 Embedding 模型(如 text-embedding-ada-002 或 Sentence-BERT)将文本转换为高维向量表示。在向量空间中计算语义相似度,实现基于语义的检索而非关键词匹配,使机器能"理解"文字含义。
Q6RAG 使用哪些工具进行向量检索?
Faiss(Facebook 开源,高性能)、Milvus(国产开源,功能丰富)、Pinecone(云托管,易用)、Weaviate(支持多模态)、Elasticsearch(同时支持关键词和向量检索)。
Q7RAG 适用于哪些场景?
企业内部知识问答、客服机器人、医疗咨询、法律条文查询、产品文档助手、技术文档助手、个人学习笔记系统——需要高频更新知识或涉及私密/专有数据的场景。
Q8RAG 有哪些局限性?
依赖检索质量(检索不到→回答错误)、响应延迟(额外检索步骤)、噪声干扰(不相关内容影响生成)、知识库维护成本、长尾查询需改写、多跳推理能力有限。
Q9当召回结果与用户 query 意图不匹配时如何改进?
从近到远四个方向:分块问题(调 Chunk 大小和重叠量)→ Embedding 问题(换更适合的模型或调维度)→ 检索策略(加 BM25 混合检索 + Rerank 精排)→ Query 处理(检索前做 Query Rewrite 或指代消解)。
2.2 RAG 完整流程
⭐ 核心概念Q1RAG 的完整流程包括哪些主要阶段?
分为离线准备和在线查询。离线阶段:文档收集和切割 → 向量转换和存储(使用 Embedding 模型将文本块转向量存入向量数据库)。在线阶段:查询和检索(用户问题向量化后进行相似度检索)→ 增强和生成(检索文档与问题组合成 Prompt,输入大模型生成答案)。
Q2为什么需要对文档进行切割?
LLM 有上下文长度限制,无法一次处理过长文本;分块可提升信息检索的精准性和效率,避免在全文中"大海捞针";块太小丢失上下文完整性,太大则引入噪声——需要平衡。
Q3什么是向量化?它在 RAG 中的作用?
利用 Embedding 模型将文本转为数字向量的过程。计算机通过计算向量间距离衡量文本语义相似性,实现基于语义的高效检索而非关键词匹配,是连接知识库与自然语言查询的桥梁。
Q4预处理阶段需要做哪些工作?
文档收集(PDF/网页/数据库提取)→ 文本清洗(去页眉页脚、重复段落、空白行,大小写统一、特殊符号替换)→ 文本分块(按语义、按结构或递归切分)。
Q5RAG 中的检索阶段是如何工作的?
用户查询通过嵌入模型转向量 → 在向量数据库中做相似度计算(如余弦相似度)→ 返回 Top-K 文本块 → 可结合关键词检索(BM25)实现混合检索。
Q6生成阶段如何利用检索结果?
系统将用户问题与检索到的文档拼接成格式化的 Prompt:
用户问题: {query} + 相关文档: {doc1}{doc2} + 请结合以上信息回答。然后输入 LLM,使其基于上下文生成准确、有依据的回答。2.3 文档分块策略
⭐ 核心概念Q1分块大小一般设置为多少?
200-500 tokens(约 800-2000 字符)为起点。技术文档可增至 512-1024 tokens。每块约 150-300 词,相邻块重叠 10%-20%以保留上下文连续性。
Q2为什么设置重叠?
防止语义被切断,确保跨块的信息连续性,帮助模型更好理解边界处的上下文逻辑。
Q3分块太小或太大有什么问题?
太小:语义不完整、断章取义、模型理解片段时信息缺失。太大:包含过多无关信息、降低检索精度、引入噪声。
Q4什么是智能切片?为什么避免固定长度切分?
智能切片根据语义边界(句子、段落)而非固定字符数分割。避免固定长度:防止一句话截断在两个片段中,保持语义完整性,提升嵌入表达和检索匹配效果。
Q5分块后为什么要添加元数据?
提升检索准确性和可解释性:来源信息(文档标题、URL、上传时间)、结构信息(章节标题、段落位置、页码)、领域标签(如"产品手册""API 文档")。检索时结合条件过滤缩小范围。
Q6常见分块工具有哪些?
LangChain RecursiveCharacterTextSplitter(递归拆分+滑动窗口)、Hugging Face Tokenizers(按 token 数精确分块)、Spring AI TokenTextSplitter(基于 Token 数+语义边界)。
Q7RAG 中常见的分块策略有哪些?
固定大小分块、按语义边界(段落/章节)分块、滑动窗口重叠分块、混合策略(句子边界+token 数量)。
2.4 Embedding 技术
⭐ 核心概念Q1Embedding 在 RAG 中的作用是什么?
将文本转为高维向量,通过语义相似度进行检索:把文档和用户问题都映射到同一向量空间,使系统找出语义最相关的文档内容,超越单纯的关键词匹配。
Q2Embedding 是如何工作的?
通过深度学习模型将文本编码成一串数字组成的向量(如 1536 维),捕捉文本的语义信息。语义相近的文本向量空间中也更近——例如"猫"和"小猫"的向量非常接近,而"猫"和"汽车"相距较远。
Q3不同 Embedding 模型有哪些区别?
| 模型 | 维度 | 语言适配 | 特点 |
|---|---|---|---|
| OpenAI ada-002 | 1536 | 英文为主 | 效果好,需付费 |
| 阿里云 embed-v4 | - | 中文优化 | 国产,中文场景 |
| 智谱 embed-3 | - | 中文优化 | 国产,性价比高 |
| Sentence-BERT | 可变 | 多语言 | 开源,本地部署 |
| m3e / bge | 可变 | 中文优化 | 开源,中文效果好 |
Q4选择向量化模型时应考虑哪些因素?
语义理解能力、向量维度(高维能力强成本高、低维效率高可能损失细节)、语言适配(中文应用推荐中文优化模型)、推理速度(影响响应时间)、部署成本(云端 API vs 本地部署)。
Q5什么是多模态 Embedding?
将文本、图像、音频等映射到同一向量空间,实现跨模态检索——用文字搜图片、用图片查找描述性文本,是未来智能检索的重要方向。
2.5 向量数据库
⭐ 核心概念Q1为什么 RAG 需要使用向量数据库?
专门优化高维向量的存储和相似度搜索,支持快速查找与用户问题最相关的文档。相比传统数据库,能高效处理海量向量数据并加速检索过程。
Q2向量数据库在 RAG 中扮演什么角色?
存储文本块对应的向量及其元数据;查询时支持快速的近似最近邻搜索(ANN);实现高效的相关文档检索。
模块 3
RAG 高级优化技术
六节3.1 混合检索
⭐ 核心概念Q1什么是混合检索?
结合向量检索(语义匹配)+ 关键词检索(精确匹配专有名词、缩写等),两者融合克服单一方法的局限性。
Q2混合检索主要解决什么问题?
向量检索能理解语义但难以精准匹配特定术语(如"iPhone 15"或"RAG");关键词检索能精确命中关键词但无法理解语义相近的内容。混合检索兼顾语义理解和关键实体召回率。
Q3混合检索如何实现?
通常并行执行:同时走向量检索和关键词检索 → 分别获取结果 → 通过加权融合或 RRF(Reciprocal Rank Fusion)合并排序 → 输出综合排序的最优文档。
Q4除了向量+关键词,还有哪些混合检索形式?
不同数据源并行检索(文档库+结构化数据库)、多路召回策略(规则、图谱、标签融合)——只要是多种检索方式协同工作,都属于广义的混合检索。
3.2 Rerank 重排序
⭐ 核心概念Q1什么是 Rerank?
在初步检索出候选文档后,用更精细的 Cross-Encoder 模型对文档重新排序,从 Top-K 候选中筛选最贴合用户查询的文档,提升最终上下文的相关性和质量。
Q2为什么不能只用初步检索跳过 Rerank?
初检基于浅层语义匹配(Bi-Encoder),容易召回相关性低的文档。若跳过 Rerank,生成模型可能基于无关上下文作答,导致"垃圾进,垃圾出"——幻觉或错误输出。
Q3Rerank 模型通常采用什么架构?
多采用 Cross-Encoder:同时输入 query 和候选文档,进行深层语义交互计算,获得更精确的相关性得分。计算开销大、速度慢,但排序准确性远高于 Bi-Encoder。
Q4常见 Rerank 模型有哪些?
BAAI/bge-reranker-base(开源,中英文)、BAAI/bge-reranker-large(开源,效果更好)、Cohere Reranker-v3.5(支持 100+ 种语言,长文本适用)。
Q5如何理解 Rerank 的"两阶段检索"流程?
第一阶段(快速初检):向量数据库召回 Top 100。第二阶段(精排):Cross-Encoder 逐对打分并重新排序。最终保留 Top 5~10 最相关文档供生成。类比招聘:HR 筛 100 份简历 → 业务主管逐一面评选 5 人。
Q6Rerank 是否必须在 RAG 中使用?
不是必须。简单任务或资源受限环境可省略;专业问答、法律、医疗等高精度领域强烈推荐。对回答质量要求越高,Rerank 的价值越大。
3.3 查询优化技术
⭐ 核心概念Q1什么是查询扩展?
对用户原始查询进行优化和补充——添加同义词、相关术语、上位概念、下位场景或隐含意图,使查询更精准且覆盖更广。例如将"减肥"扩展为"健康减肥方法 饮食运动 避免反弹"。
Q2查询重写和查询扩展有什么区别?
查询重写:提升匹配精度(把模糊/简短查询改得更清晰规范)。查询扩展:提高召回率(生成多个语义相近的查询,分别检索后合并结果)。
Q3查询扩展如何解决词汇不匹配问题?
用户说"新冠",文档里可能是"COVID-19"或"新型冠状病毒"。通过查询扩展引入同义词和标准术语,增强匹配能力,提高召回率。
Q4常见的查询扩展方法有哪些?
基于同义词词典(WordNet),基于词向量/语义模型找相似词,利用大模型生成相关术语,结合上下位词与关联词进行结构化扩展。
Q5查询扩展是否可能带来负面影响?
是的。过度扩展或引入无关词汇可能导致检索噪声增加、召回不相关文档、误导生成模型。需控制扩展范围,结合排序机制筛选,避免语义漂移。
3.4 Advanced RAG
⭐ 核心概念Q1什么是 Advanced RAG?
传统 RAG 的升级——在检索前(查询重写与扩展、滑动窗口分块)、检索中(混合检索、动态嵌入)、检索后(重排序、上下文重构、内容过滤)三个阶段引入优化,解决信息断裂、检索不精准、上下文冗余等问题。
Q2Advanced RAG 与传统 RAG 的主要区别?
| 阶段 | 传统 RAG | Advanced RAG |
|---|---|---|
| 检索前 | 简单分块和向量检索 | 查询重写与扩展、滑动窗口分块 |
| 检索中 | 单一检索方式 | 混合检索、动态嵌入 |
| 检索后 | 直接使用结果 | 重排序、上下文重构、内容过滤 |
Q3分层索引如何提升检索效率?
粗粒度索引(文档类别、主题)快速缩小范围 → 细粒度索引(关键词、语义向量)精确定位内容。类似图书馆先按学科再按书名查找,大幅减少计算开销。
Q4上下文重构和提示压缩有什么区别?
提示压缩:去除冗余、重复或无关信息,保留核心要点。上下文重构:重新组织信息的逻辑结构,使其更符合人类表达习惯(按时间顺序或因果关系排列)。
3.5 Modular RAG
⭐ 核心概念Q1什么是 Modular RAG?
将 RAG 系统拆分为多个松耦合、可重组功能模块的架构设计。每个模块独立负责特定任务,由统一的编排器进行调度与路由,实现灵活配置、可插拔替换和全流程优化。
Q2Modular RAG 的核心模块有哪些?
Indexing(优化文档分块与知识存储)、Pre-Retrieval(查询转换与扩展)、Retrieval(混合检索多源召回)、Post-Retrieval(重排序和压缩)、Generation(LLM 生成+外部知识验证)。
Q3Modular RAG 中的编排器起什么作用?
路由 Routing(根据查询语义决定调用哪些模块)、调度 Scheduling(安排执行顺序,支持迭代优化)、知识引导(利用知识图谱规划推理路径)。
Q4Naive / Advanced / Modular RAG 的区别?
Naive RAG:基础版,简单检索+生成。Advanced RAG:引入查询优化、重排序等改进。Modular RAG:完全模块化设计,加入编排器,动态控制全流程。
3.6 提示压缩
⭐ 核心概念Q1什么是提示压缩?
对检索出的文档内容进行精简:提取核心信息、过滤无关文本、压缩冗长内容,使输入 LLM 的 Prompt 既保留关键信息又符合长度限制。
Q2为什么需要提示压缩?
控制输入长度避免超出上下文窗口;提高知识相关性让模型聚焦关键信息;降低计算成本减少 token 消耗和调用成本。
Q3提示压缩常用方法有哪些?
基于小型语言模型的信息熵评估(如 LLMLingua、Selective Context,通过判断句子信息密度自动删减冗余);结合规则算法(关键词匹配、实体保留策略)实现轻量级压缩。
Q4instruction_str 的作用是什么?
提示压缩时的指导指令,告诉压缩模型重点关注哪些信息。例如设置为"保留人名、日期和数字"或"提取与问题相关的事实",可定向优化压缩结果的相关性和信息密度。
模块 4
开发框架
五节4.1 LangChain 架构
⭐ 核心概念Q1LangChain 的核心架构由哪几部分组成?
四个关键模块:LangChain Libraries(核心功能:链和代理)、LangChain Templates(预配置参考架构)、LangServe(将链部署为 REST API)、LangSmith(调试、测试、评估和监控平台)。
Q2LangSmith 扮演什么角色?
开发者平台:调试(追踪链的执行过程)、测试(优化性能)、评估(排查问题)、监控(确保 LLM 应用的稳定性和可靠性)。
Q3LLM 和 ChatModel 有什么区别?
LLM:字符串 → 字符串,适合简单文本生成。ChatModel:消息对象 → 消息对象,适合多轮对话和上下文管理。
Q4输出解析器的作用是什么?
将 LLM 返回的原始文本输出转换为结构化数据格式(JSON、列表等),便于程序后续处理和分析。
4.2 LangChain Agent
⭐ 核心概念Q1什么是 LangChain Agent?
利用 LLM 推理能力,根据用户输入动态选择并调用合适工具或链的组件。像智能指挥官一样——分析需求、制定计划、调用工具、根据结果调整策略,实现灵活的任务执行。
Q2Agent 与普通 Chain 有什么区别?
Chain:预定义顺序执行、固定流程,适合简单线性任务。Agent:动态决策、自主选择执行路径,适合复杂不确定任务。
Q3Agent 中的反馈循环是什么意思?
Agent 持续接收工具返回的结果,评估当前进度,如果任务未完成或信息不足即调整策略、重新选择工具或补充查询,形成"思考-行动-观察-再思考"的闭环过程。
Q4支持哪些类型的记忆管理?
短期记忆:保存当前对话上下文,确保多轮交互一致性。长期记忆:通过向量数据库存储历史信息,后续任务可检索利用。
4.3 LangGraph
⭐ 核心概念Q1什么是 LangGraph?
LangChain 生态中基于图结构的开源框架:将任务流程建模为有向无环图(DAG),通过节点和边精确控制 AI 工作流的执行过程,专门构建状态化、多代理协同的复杂应用。
Q2LangGraph 和传统 LangChain 链式结构有何不同?
LangChain:线性链式、固定流程、难处理分支循环。LangGraph:图结构、条件跳转/并行/循环、全局状态持久化、支持人工介入暂停点——适合复杂多代理系统。
Q3节点和条件边的作用?
节点:独立处理单元,代表具体操作(调用 LLM、执行工具),接收状态输入后返回更新状态。条件边:定义路由函数,根据状态内容决定下一步跳转到哪个节点(如用户含"投诉"→ 人工审核节点)。
Q4状态在 LangGraph 中扮演什么角色?
贯穿整个流程的数据上下文(通常为字典),包含对话历史、中间结果等信息,在各节点间传递驱动行为决策,支持持久化存储,可用于中断后恢复执行。
Q5LangGraph Studio 是什么?
LangChain 推出的智能体开发 IDE:图形化流程设计(拖拽节点和连线)、实时调试(单步执行、状态查看与修改)、代码与可视化结合的热重载能力。
4.4 框架选择策略
⭐ 核心概念Q1什么情况下用 LangChain,什么情况用 LangGraph?
LangChain:任务流程简单、步骤固定、无需动态调整,如"提问→检索→生成"。LangGraph:多角色协作、状态跟踪、条件判断、循环重试,如客服系统根据复杂度自动路由到不同代理。两者互补,可组合使用。
4.5 LlamaIndex 与 LangChain 集成
⭐ 核心概念Q1LlamaIndex 和 LangChain 结合的主要目的?
构建更强大的 RAG 系统:LlamaIndex 擅长数据索引和检索;LangChain 提供链式调用、代理和工具集成。结合可实现的复杂多步推理和动态数据访问。类比:信息检索专家+项目经理合作。
Q2如何将 LlamaIndex 查询引擎作为工具集成到 LangChain?
通过
IndexToolConfig 和 LlamaIndexTool 类:配置工具名称、描述、query_engine 等参数,生成工具实例,注册到 LangChain Agent 中。return_direct=True 时直接返回工具结果,不再经过额外 LLM 处理。
模块 5
工程实践
三节5.1 提示工程
⭐ 核心概念Q1RAG 应用中提示工程的核心设计技巧?
明确角色和任务;结构化提示引导模型理解输入结构和输出格式;上下文约束(仅基于资料回答);模板化设计(便于动态填充);兜底机制(检索失败时告知"未找到");提供示例引导输出风格和格式。
Q2如何通过提示防止模型产生幻觉?
在 Prompt 中加入约束语句:"如果找不到相关资料,请回复'未找到相关内容'"、"不要使用自己的知识进行推断"——强制模型仅依赖提供的上下文作答。
Q3请给出一个适用于 RAG 的通用提示模板。
你是xx领域专家,请基于以下资料回答问题:【资料】:{{retrieved_documents}}【问题】:{{user_question}}【要求】:仅根据资料回答,不得编造信息。若无相关信息,请回答"未找到相关内容"。【输出格式】:回答:... / 引用依据:...Q4为什么需要兜底机制?
应对检索失败的情况,避免模型强行生成错误答案,增强系统的鲁棒性和可信性。
5.2 文档处理流程
⭐ 核心概念Q1RAG 文档处理流程的主要目的?
将原始文档转化为 AI 可检索、可理解的格式,通过引入外部知识增强大模型的回答质量,缓解知识陈旧和幻觉问题。
Q2文档解析的核心步骤?
读(多格式文档加载)→ 洗(去页眉页脚、重复段落、统一格式)→ 拆(按语义切分)→ 标(元数据标注:来源、日期、标签)→ 存(向量数据库)。
Q3如何处理多语言混合文本?
用 langdetect 做语言检测;清洗和分块时保持原语序不拆分避免语义断裂;用正则表达式规范特殊字符和换行符。
Q4遇到加密或损坏的文档如何处理?
记录错误日志并跳过该文档,防止阻塞整体流程,后续可通过人工干预修复后重新解析。
Q5大文档(>100MB)如何避免内存溢出?
先按章节拆分大文档(正则匹配"第X章")→ 逐章节解析 → 用生成器逐块输出 → 结合多线程或异步方式提升处理效率。
5.3 RAG vs Fine-tuning 选择
⭐ 核心概念Q1RAG 和 Fine-tuning 的核心区别?
| 特性 | RAG | Fine-tuning |
|---|---|---|
| 知识存储 | 外部知识库 | 模型参数中 |
| 更新方式 | 修改知识库即可 | 需重新训练 |
| 模型改变 | 不改变模型本身 | 调整模型参数 |
| 成本结构 | 实施成本低、每次调用有开销 | 训练成本高、使用后成本低 |
Q2Fine-tuning 在哪些情况下可能优于 RAG?
需要改变模型输出风格、语气或行为模式;响应速度要求极高(无需额外检索步骤);知识内容相对固定的场景。
Q3RAG 和 Fine-tuning 可以结合吗?
可以。例如客服机器人:先用 Fine-tuning 掌握客服表达风格和基础话术 → 再结合 RAG 从最新产品文档中检索具体信息,既保证回答专业性又确保信息准确与时效。
Q4新项目如何选择 RAG 还是 Fine-tuning?
优先 RAG:知识密集且常更新的场景,实施快、成本低、易维护。若 RAG 无法满足响应速度或风格一致性要求再引入 Fine-tuning。通常先 RAG 快速验证可行性,不足时再叠加微调优化。
模块 6
词向量与词嵌入技术
5节1.1 Word2Vec 基础
⭐ 核心概念Q1Word2Vec 是什么?包含哪两种模型?
Word2Vec 是 Google 于 2013 年提出的词嵌入模型,将词语转换为稠密向量表示。
两种模型:
- CBOW(Continuous Bag of Words):通过上下文词预测目标词
- Skip-gram:通过目标词预测上下文词
Q2CBOW 和 Skip-gram 的核心区别是什么?
| 特性 | CBOW | Skip-gram |
|---|---|---|
| 预测方向 | 上下文 → 目标词 | 目标词 → 上下文 |
| 训练速度 | 快(上下文平均平滑) | 慢(逐词更新) |
| 低频词处理 | 一般 | 更好 |
| 适用场景 | 大数据集、高频词 | 小数据集、语义精度要求高 |
Q3为什么 CBOW 训练速度更快?
CBOW 使用上下文词向量的平均值作为输入,这种平滑操作减少了参数更新次数,计算开销较小;而 Skip-gram 需要为每个上下文词单独更新参数。
Q4为什么 Skip-gram 对低频词效果更好?
Skip-gram 通过单个目标词学习多个上下文词的分布,对词语间的语义关系捕捉更细致,即使在数据稀疏场景下也能有效学习低频词的高质量表示。
Q5如何根据任务选择 CBOW 或 Skip-gram?
- 选 CBOW:数据集大、注重训练效率、任务关注高频词(如文本分类、情感分析)
- 选 Skip-gram:数据集小、需精确捕捉语义(尤其低频词)、对训练时间容忍度高
Q6Word2Vec 的局限性是什么?
- 为每个词分配唯一固定向量,无法处理多义词
- 不考虑上下文环境,同一词在不同语境下表示相同
- 无法处理未登录词(OOV)
1.2 训练加速技术
⭐ 核心概念Q1Word2Vec 训练为什么慢?
每次训练需要对词汇表中每个词计算 softmax,复杂度为 O(V),V 为词汇表大小。词汇量大时计算非常耗时。
Q2Hierarchical Softmax 如何加速训练?
使用霍夫曼树将计算复杂度从 O(V) 降低到 O(log V):
- 每个词对应树的一个叶子节点
- 通过路径上的内部节点进行概率计算
- 大幅减少每轮训练的计算量
Q3Negative Sampling(负采样)的原理是什么?
通过只更新一小部分词的权重来加速训练:
- 从负例中采样少量词语(不相关的词)
- 仅更新这些负样本和目标词的权重
- 大幅减少计算量并加快收敛
Q4负采样的目标函数是如何设计的?
最大化正样本相似度概率,同时最小化负样本相似度概率:
log σ(v_c · v_w) + Σ log σ(-v_c · v_wi)
其中 σ 是 Sigmoid 函数,c 为中心词,w 为正样本,wi 为负样本。Q5负采样如何选择负样本?
根据词汇表中词语的频率分布进行随机采样:
- 常用词语频率的 3/4 次方作为采样概率
- 提高低频词被选为负样本的概率
- 避免高频词过度主导训练
Q6负采样中 k 值一般取多少?
通常取 5-20:
- k 过小:模型区分能力不足
- k 过大:增加计算负担
- 大型语料库:较小的 k 值即可取得良好效果
Q7Subsampling 高频词的作用是什么?
以一定概率跳过出现频率极高的词(如"的"、"是"):
- 这些词提供的语义信息较少
- 减少计算量,提高训练效率
- 提升低频词的表示质量
1.3 GloVe
⭐ 核心概念Q1GloVe 是什么?与 Word2Vec 有何区别?
GloVe(Global Vectors)通过统计方法学习词向量:
- GloVe:基于全局共现矩阵,利用全局统计信息
- Word2Vec:基于局部上下文窗口预测
| 特性 | GloVe | Word2Vec |
|---|---|---|
| 训练依据 | 全局共现统计 | 局部上下文预测 |
| 优势 | 捕捉全局语义、低频词关系 | 动态语义建模 |
| 劣势 | 训练慢、内存大 | 缺乏全局视角 |
Q2GloVe 的训练步骤是什么?
1. 构建共现矩阵:统计词对在固定窗口内的共现次数
2. 加权处理:使用加权函数降低高频词影响
3. 优化目标函数:使词向量内积接近对数共现概率
Q3GloVe 的目标函数设计思想是什么?
让两个词的词向量内积尽可能接近它们在语料中的对数共现概率,结合全局统计优势和向量空间模型特性。
Q4为什么 GloVe 在某些任务中不如 Word2Vec?
在命名实体识别、机器翻译等任务中,需要捕捉词语在不同上下文中的动态语义变化。Word2Vec 通过局部上下文预测更擅长建模这种动态关系,而 GloVe 基于静态全局统计,缺乏上下文敏感性。
Q5GloVe 目前还被广泛使用吗?
虽然在一些静态语义任务中仍有应用,但已被 BERT、GPT 等基于 Transformer 的上下文感知模型超越。这些模型能动态生成词向量,在大多数 NLP 任务中表现更优。
---
1.4 FastText
⭐ 核心概念Q1FastText 与 Word2Vec 的主要区别是什么?
FastText 引入子词(subword)信息:
- Word2Vec:将词作为整体处理
- FastText:将词分解为字符级 n-gram
Q2为什么 FastText 能更好地处理未登录词(OOV)?
将词拆分为字符 n-gram(如"playing"拆为"pla"、"lay"、"ayi"等):
- 即使遇到未登录词,只要子词在训练中出现过
- 就能生成合理的向量表示
- 有效解决 OOV 问题
Q3FastText 在哪些任务中更具优势?
- 文本分类
- 处理拼写错误
- 多语言任务
- 形态变化丰富的语言
- 需要快速训练和高准确率的场景
Q4什么是子词(subword)信息?
从词中提取的连续字符片段(n-gram)。FastText 将每个词表示为其包含的子词向量之和,利用词的构词特征增强表达能力。
Q5FastText 如何提升训练速度和内存效率?
- 采用层次 Softmax 和哈希技巧
- 减少参数数量
- 加速 softmax 计算过程
Q6在什么数据条件下更适合使用 FastText?
- 数据集中存在大量拼写变体、稀有词、未登录词
- 涉及多语言、形态丰富语言
- 需要快速构建高性能文本分类器
1.5 负采样深入
⭐⭐ 进阶考察Q1负采样中,正样本和负样本分别指什么?
- 正样本:给定中心词的实际上下文词(滑动窗口内真实出现的词)
- 负样本:从词汇表中随机采样的、与中心词不相关的词
Q2负采样相比层次 Softmax 有什么优势?
- 实现更简单
- 计算效率更高
- 更容易并行化
- 在小规模数据和分布式训练中表现更优
Q3负采样如何提升词向量质量?
通过对比学习:
- 让模型学习区分真实上下文词(正样本)和随机词(负样本)
- 增强对语义相关性的判断能力
- 使生成的词向量更具区分性和语义表达能力
Q4请举例说明负采样在 Skip-gram 中的应用。
句子"apple is a fruit",以"apple"为中心词:
- 正样本:"is"、"a"
- 负样本:随机选择"book"、"table"等
- 目标:让"apple"与"is"、"a"相似度高,与"book"、"table"相似度低
模块 7
词嵌入应用
3节2.1 词嵌入方法对比
⭐ 核心概念Q1常见的词嵌入方法有哪些?
| 方法 | 特点 | 局限 |
|---|---|---|
| **Word2Vec** | CBOW/Skip-gram,高效 | 无法处理多义词 |
| **GloVe** | 全局统计,语义准确 | 训练慢,内存大 |
| **FastText** | 子词信息,处理OOV | 向量维度较高 |
| **ELMo** | 双向LSTM,动态词向量 | 计算复杂 |
| **BERT** | Transformer,双向上下文 | 参数量大,部署成本高 |
Q2哪些词嵌入方法能处理未登录词?
- FastText:通过子词信息处理
- ELMo:通过上下文动态建模
- BERT:通过上下文动态建模
Q3BERT 的词嵌入有什么特点?
- 基于 Transformer 架构
- 采用双向编码器
- 通过掩码语言模型任务预训练
- 能捕捉深层上下文信息
- 生成上下文相关的词向量
2.2 文本分类中的应用
⭐ 核心概念Q1Word Embedding 在文本分类中的作用是什么?
将词汇映射到稠密向量空间:
- 语义相近的词在向量空间中距离更近
- 帮助模型更好地理解文本语义
- 提升分类的准确性和泛化能力
Q2与传统方法(如 Bag-of-Words)相比有何优势?
| 特性 | Bag-of-Words | Word Embedding |
|---|---|---|
| 表示方式 | 稀疏、高维 | 稠密、低维 |
| 语义信息 | 仅词频 | 丰富语义关系 |
| 泛化能力 | 弱 | 强 |
Q3如何将 Word Embedding 应用于文本分类?
1. 文本预处理(分词、清洗)
2. 使用预训练或自训练的词向量模型
3. 将每个词转换为向量
4. 通过平均池化等方式聚合为句子向量
5. 输入分类模型(SVM、CNN、RNN)训练预测
Q4为什么 Word Embedding 能提升模型泛化能力?
捕捉了词语间的语义相似性(如"猫"和"狗"向量接近):
- 即使遇到训练中未充分出现的词
- 也能基于相似词进行合理推断
- 增强泛化能力
Q5如何处理整个文档的向量表示?
- 平均池化:所有词向量求平均
- 加权平均:根据词重要性加权
- LSTM/CNN:使用深度学习模型编码
Q6FastText 在文本分类中有何优势?
考虑词的子词(n-gram)结构:
- 能为未登录词生成合理向量
- 处理拼写错误、罕见词表现更好
- 适合实际场景的文本分类任务
2.3 高维稀疏数据处理
⭐ 核心概念Q1为什么文本分类需要处理高维稀疏数据?
文本数据通常使用词袋模型或 N-gram 表示:
- 特征维度非常高(数万甚至数十万维)
- 每个样本只激活少数特征
- 形成稀疏矩阵
Q2什么是特征选择?常用方法有哪些?
从原始特征中挑选对分类最有用的子集:
- 卡方检验:筛选与类别相关性强的词
- 互信息:衡量词语与类别的相关性
- LASSO回归:通过 L1 正则化自动筛选重要特征
Q3PCA 和 SVD 在文本分类中有何区别?
| 方法 | 适用数据 | 特点 |
|---|---|---|
| **PCA** | 稠密数据 | 基于协方差矩阵 |
| **SVD** | 稀疏数据(如TF-IDF) | 可直接分解稀疏矩阵 |
Q4词嵌入如何帮助处理高维稀疏数据?
将高维稀疏的 one-hot 词向量映射为低维稠密的语义向量:
- 显著降低维度
- 捕捉词语间的语义相似性
- 提升分类性能
Q5L1 正则化为什么能用于高维稀疏数据处理?
通过对系数绝对值施加惩罚:
- 不重要的特征权重被压缩至零
- 实现自动特征选择
- 减少模型复杂度,缓解过拟合
Q6TF-IDF 是如何优化文本稀疏表示的?
结合词频(TF)和逆文档频率(IDF):
- 降低常见词(如"的"、"是")的权重
- 突出具有区分性的关键词
- 生成更具判别力的稀疏特征
Q7如何结合多种方法处理文本高维稀疏问题?
典型流程:
1. TF-IDF 或 Count Vector 初步表示
2. 特征选择(如卡方检验)剔除无关特征
3. SVD/PCA 降维
4. 或采用词嵌入转换为稠密向量
5. 配合 L1/L2 正则化训练分类器
Q8BERT 等预训练模型如何解决高维稀疏问题?
通过 Transformer 架构对文本进行上下文感知编码:
- 输出固定长度的稠密向量表示
- 完全避免传统高维稀疏表示
- 具备强大的语义理解能力
Q9稀疏表示与稠密表示的主要区别是什么?
| 特性 | 稀疏表示 | 稠密表示 |
|---|---|---|
| 代表方法 | One-Hot、TF-IDF | 词嵌入 |
| 元素特点 | 大多数为零 | 所有元素非零 |
| 维度 | 高 | 低 |
| 语义信息 | 弱 | 丰富 |
模块 8
模型训练优化
3节3.1 梯度裁剪
⭐ 核心概念Q1什么是梯度裁剪?在 Transformer 训练中起什么作用?
梯度裁剪(Gradient Clipping)是防止梯度爆炸的技术:
- 限制梯度的 L2 范数(或按值裁剪)
- 将梯度控制在合理范围内
- 提升训练稳定性并加速收敛
Q2梯度爆炸为什么会发生在 Transformer 中?
源于深度神经网络中的链式求导机制:
- 多层梯度连乘后大于 1,梯度呈指数级增长
- Transformer 深层结构(12层以上)和大规模参数可能导致梯度累积放大
- 训练初期权重初始化不当时更容易发生
Q3PyTorch 中如何实现梯度裁剪?
# 基于 L2 范数裁剪(更常用)
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
# 基于值裁剪
torch.nn.utils.clip_grad_value_(model.parameters(), clip_value=1.0)
在 `loss.backward()` 之后、`optimizer.step()` 之前调用。Q4clip_grad_norm_ 和 clip_grad_value_ 的区别是什么?
| 方法 | 裁剪方式 | 适用场景 |
|---|---|---|
| **clip_grad_norm_** | 所有参数梯度的整体 L2 范数 | 整体梯度幅度过大 |
| **clip_grad_value_** | 逐元素限制梯度值 | 个别异常梯度值 |
Q5梯度裁剪会影响模型收敛速度吗?
合理使用不会影响,反而有助于加速收敛:
- 避免梯度爆炸导致的参数剧烈波动
- 使优化路径更加平稳
- 但阈值过小可能过度抑制梯度,减慢学习
Q6如何选择合适的梯度裁剪阈值?
- 常见阈值:1.0、5.0
- 一般从 5.0 开始尝试
- 监控梯度的平均 L2 范数动态调整
- 理想情况下裁剪不应太频繁
Q7梯度裁剪属于正则化方法吗?与 L2 正则有何不同?
梯度裁剪常被视为隐式正则化,但主要目的是稳定训练:
两者可同时使用。
| 特性 | 梯度裁剪 | L2 正则 |
|---|---|---|
| 主要目的 | 稳定训练过程 | 约束模型复杂度 |
| 实现方式 | 限制梯度范围 | 损失函数添加参数平方项 |
| 目标 | 防止梯度爆炸 | 提升泛化能力 |
Q8除了梯度裁剪,Transformer 还有哪些训练稳定性优化技巧?
- AdamW 优化器:正确实现权重衰减
- 学习率预热(Warmup):初期缓慢增加学习率
- Dropout 和 Layer Normalization:增强鲁棒性
- 标签平滑(Label Smoothing):正则化手段
3.2 冻结层策略
⭐ 核心概念Q1冻结层在微调中的主要作用是什么?
- 减少计算资源消耗
- 降低内存占用
- 加速训练过程
- 防止在小数据集上过拟合
Q2为什么微调时通常选择冻结底层而微调高层?
- 底层:学习通用特征(边缘、纹理等),迁移性好
- 高层:学习抽象、任务相关特征
Q3冻结层如何帮助防止过拟合?
在小数据场景下:
- 冻结部分层减少可训练参数数量
- 限制模型容量
- 保持预训练模型的泛化能力
Q4常见的冻结层策略有哪些?
1. 冻结底层、微调高层
2. 冻结前几层、微调后几层
3. 逐层解冻:逐步释放更多层参与训练
Q5如何在 PyTorch 中实现层的冻结?
# 冻结参数
for param in model.parameters():
param.requires_grad = False
# 或冻结特定层
for param in model.bert.embeddings.parameters():
param.requires_grad = FalseQ6什么是逐层解冻?优点是什么?
从完全冻结开始,逐步解冻每一层并继续训练:
- 精细控制模型适应过程
- 避免大规模参数更新带来的不稳定
- 帮助找到最佳训练配置
Q7在什么情况下不应该冻结层?
- 目标任务与预训练任务差异较大
- 有足够的标注数据
- 此时应进行全量微调
3.3 灾难性遗忘
⭐ 核心概念Q1什么是灾难性遗忘?
模型在学习新任务时,快速丢失对旧任务知识的记忆。
原因:
- 下游任务数据量小、训练强度高
- 模型参数发生剧烈变化
- 预训练阶段学到的通用表示被覆盖
Q2EWC 是如何防止灾难性遗忘的?
Elastic Weight Consolidation(EWC):
- 计算参数对旧任务的重要性(Fisher 信息矩阵)
- 在损失函数中加入正则化项
- 限制重要参数的更新幅度
- 保护关键知识不被破坏
Q3经验重放和黑暗重放有什么区别?
| 方法 | 数据存储 | 特点 |
|---|---|---|
| **经验重放** | 存储旧任务真实样本 | 效果好,但有隐私风险 |
| **黑暗重放(DER)** | 生成伪样本或特征 | 避免存储原始数据,降低隐私风险 |
Q4知识蒸馏如何帮助缓解灾难性遗忘?
让新模型在旧任务输入上模仿原模型的输出分布(软标签):
- 即使没有真实标签也能保留旧模型行为模式
- 无需访问旧数据标注
- 适合数据受限场景
Q5LoRA 和 I-LoRA 在防止遗忘方面有何不同?
- LoRA:通过低秩适配器微调,冻结主干参数减少干扰
- I-LoRA:结合经验重放机制,引入双重记忆机制
Q6PackNet 是如何管理多任务参数的?
采用"训练—剪枝—冻结"流程:
1. 训练新任务
2. 剪掉不重要的权重
3. 冻结剩余重要权重作为旧任务保留
4. 为新任务分配新的可训练参数
Q7Learning without Forgetting(LwF)是否需要旧任务数据?
不需要旧任务的标注数据,但需要:
- 旧任务的输入数据进行推理
- 获取原模型的软标签用于蒸馏
Q8哪些方法适合数据隐私敏感的场景?
- 黑暗重放(DER)
- 知识蒸馏类方法(如 LwF)
- 基于正则化的方法(如 EWC、SI)
模块 9
模型评估
2节4.1 Transformer 评估指标
⭐ 核心概念Q1评估 Transformer 模型性能常用的指标有哪些?
| 任务类型 | 常用指标 |
|---|---|
| 分类任务 | 准确率、精确率、召回率、F1-score |
| 序列标注 | 实体级/Token级 F1 |
| 文本生成 | BLEU、ROUGE、METEOR、Perplexity |
| 对话系统 | 自动指标 + 人工评估 |
Q2为什么类别不平衡时不推荐只用准确率?
模型可能偏向多数类获得高准确率,但忽略少数类预测效果。应结合精确度、召回率、F1-score 综合评估。
Q3精确度和召回率的区别是什么?
| 指标 | 含义 | 关注点 |
|---|---|---|
| **精确度** | 预测为正类中有多少是真正类 | 预测准确性 |
| **召回率** | 所有真实正类中有多少被找出 | 覆盖完整性 |
Q4F1-score 的意义是什么?
精确度和召回率的调和平均数:
- 同时反映两个指标的信息
- 在类别不平衡或需要平衡两者时更全面
Q5BLEU 和 ROUGE 分别适用于什么任务?
| 指标 | 适用任务 | 侧重点 |
|---|---|---|
| **BLEU** | 机器翻译 | n-gram 匹配程度 |
| **ROUGE** | 文本摘要 | 召回率,覆盖参考内容 |
Q6如何判断 Transformer 模型是否过拟合?
- 训练损失持续下降,验证损失开始上升
- 训练准确率远高于验证准确率
4.2 微调效果评估
⭐ 核心概念Q1判断微调效果的主要依据有哪些?
1. 验证集和测试集上的量化指标(准确率、F1、BLEU等)
2. 训练过程中的损失曲线与早停机制
3. 定性评估(人工评审、用户反馈)
4. A/B 测试和线上业务指标
Q2为什么要使用验证集和测试集分开评估?
- 验证集:超参数调优和早停判断
- 测试集:最终评估,确保客观无偏估计
Q3如何通过训练曲线判断过拟合或欠拟合?
| 情况 | 训练损失 | 验证损失 |
|---|---|---|
| **过拟合** | 持续下降 | 开始上升 |
| **欠拟合** | 较高且下降缓慢 | 较高且下降缓慢 |
| **正常** | 下降并趋于稳定 | 下降并趋于稳定 |
Q4什么是早停(Early Stopping)?
在训练过程中监控验证集性能:
- 连续若干轮未提升时停止训练
- 防止模型在训练集上过拟合
- 保留最优泛化状态
Q5为什么需要定性评估?
自动指标难以全面反映:
- 语言质量
- 逻辑连贯性
- 用户体验
Q6A/B 测试在模型效果评估中起什么作用?
将微调后的模型部署到部分真实用户流量:
- 与基线模型对比关键业务指标
- 验证线上环境的实际价值
- 是判断是否达到预期的重要闭环手段
Q7如何评估微调后模型的鲁棒性和泛化能力?
- 引入对抗样本(同义词替换、拼写错误)测试稳定性
- 在不同领域或风格数据上验证性能漂移
- 评估跨域适应能力
模块 10
Prompt Engineering
1节5.1 基础概念
⭐ 核心概念Q1什么是 Prompt Engineering?
通过精心设计输入给 AI 模型的文本提示,引导模型产生期望输出的技术和方法。
本质是"如何更好地与 AI 对话"的艺术与科学。
Q2Prompt Engineering 的核心价值有哪些?
1. 释放 AI 潜力:让模型更准确理解需求
2. 提升工作效率:效率提升十倍甚至更多
3. 降低使用门槛:非技术人员也能充分利用 AI
Q3提示词工程与传统编程有什么异同?
| 特性 | 传统编程 | 提示词工程 |
|---|---|---|
| 指令形式 | 代码命令 | 自然语言 |
| 执行对象 | 计算机 | 具备推理能力的智能体 |
| 特点 | 精确、确定性 | 创造性、灵活性 |
Q4一个好的提示词和差的提示词有何区别?
| 好的提示词 | 差的提示词 |
|---|---|
| 具体、清晰 | 模糊、笼统 |
| 结构合理 | 缺乏结构 |
| 包含角色设定、任务目标、输出格式 | 缺乏上下文和约束 |
Q5提示词工程的主要流程包括哪些环节?
1. 理解用户需求
2. 分析模型特性
3. 设计初始提示策略
4. 生成优化后的提示词
5. 输入模型获取输出
6. 根据结果持续迭代优化
Q6提示词工程的重要性是否会随着模型进步而下降?
不会,反而越来越重要:
- 如何高效调动模型能力仍需专业技能
- 用最少的 token 实现最优输出
- 设计适用于特定场景的专业提示词
模块 11
AI 安全与护栏技术
1节6.1 护栏技术
⭐ 核心概念Q1什么是护栏技术?
AI 系统中用于确保模型输出安全、合规、符合伦理的一系列防御性技术手段:
- 防止 AI 生成有害、错误或违背人类价值观的内容
- 通过内容过滤、规则校验和应急处理等机制
- 在 AI 运行时设置安全边界
Q2护栏技术的主要目的是什么?
降低 AI 系统的潜在风险:
- 防止生成虚假信息、歧视性言论、暴力或违法内容
- 保障 AI 输出的安全性、合法性和伦理性
- 提升用户信任
Q3常见的护栏技术实现方式有哪些?
1. 内容安全过滤:利用 NLP 模型识别有害文本或图像
2. 伦理规则引擎:基于预设规则判断是否违规
3. 安全边界检查:限制 AI 回答超出能力范围的问题
4. 对抗样本检测:防范恶意诱导输入
5. 输出校准与应急处理:返回安全提示或触发人工审核
Q4护栏技术如何应对恶意输入(越狱攻击)?
- 对抗样本检测识别恶意输入
- 分析用户是否使用诱导性、绕过策略的 prompt
- 结合规则引擎和上下文理解判断意图
- 发现"越狱"尝试时拒绝响应或启动人工介入
Q5输出校准在护栏技术中的作用是什么?
优化低风险但可能存在争议的 AI 输出:
- 使其更符合社会伦理和表达规范
- 例如将"男性不适合当程序员"改写为"职业选择与性别无关"
- 既保留信息又避免传播偏见
Q6在哪些应用场景中护栏技术尤为重要?
- 医疗、金融、教育、司法等高风险领域
- 面向公众的社交平台
- 内容生成工具
模块 12
性能优化
2节7.1 GPTCache 语义缓存
⭐ 核心概念Q1什么是 GPTCache?
专为大语言模型设计的语义缓存工具:
- 将用户问题转化为向量
- 利用向量数据库进行相似性搜索
- 实现语义相近请求的缓存复用
- 减少重复的 LLM API 调用
Q2GPTCache 和传统缓存有什么区别?
| 特性 | 传统缓存 | GPTCache |
|---|---|---|
| 匹配方式 | 精确匹配(键值相同) | 语义匹配 |
| 判断依据 | 字符串完全相同 | 向量相似度 |
| 缓存命中 | 必须完全一致 | 含义相近即可 |
Q3GPTCache 如何判断两个问题是语义相似的?
1. 使用嵌入模型(如 OpenAI Embeddings)将文本转换为高维向量
2. 借助向量数据库(如 FAISS、Milvus)计算向量间相似度
3. 若相似度超过预设阈值,则认为语义相近
Q4GPTCache 的核心优势是什么?
- 降本增效:减少 LLM 调用次数,降低成本
- 语义匹配:更高缓存命中率
- 模块化设计:支持自定义嵌入模型、存储后端和逐出策略
Q5GPTCache 的工作流程是怎样的?
1. 预处理用户输入,提取核心信息
2. 使用嵌入模型生成问题的向量表示
3. 在向量数据库中进行相似性搜索
4. 若找到足够相似的缓存项,返回缓存结果
5. 否则调用 LLM 并缓存新结果
Q6如何提高 GPTCache 的缓存命中率?
- 优化嵌入模型的选择
- 调整相似度匹配阈值
- 增加缓存数据量
- 合理设计预处理逻辑(去除无关词、标准化输入)
7.2 结构化输出
⭐ 核心概念Q1大模型的结构化输出指的是什么?
让模型生成符合特定格式的数据(而非自由文本):
- JSON、XML、CSV、SQL 等
- 便于程序直接解析和处理
- 常用于数据库写入、API 调用、自动化流程
Q2为什么需要大模型的结构化输出?
- 提升系统间数据交互的效率与准确性
- 结构化数据可被程序直接解析
- 避免人工提取信息带来的低效和错误
Q3如何实现大模型的结构化输出?
主要实现方法:
1. 提示工程:明确要求输出格式并提供示例
2. JSON Schema:使用 response_format 参数进行格式约束
3. 后处理:通过代码对输出进行解析、修复和验证
Q4什么是 JSON Schema?在结构化输出中的作用是什么?
JSON Schema 是描述 JSON 数据结构的规范:
- 定义字段名、类型、是否必填等规则
- 约束模型生成合法且符合预期格式的 JSON
- 减少格式错误
Q5举例说明非结构化输出和结构化输出的区别。
非结构化输出:
故宫:明清皇家宫殿。颐和园:古典园林。
程序难以自动提取信息。
结构化输出:
[
{"name": "故宫", "description": "明清皇家宫殿"},
{"name": "颐和园", "description": "古典园林"}
]
可直接被程序解析使用。Q6当模型输出的结构化数据格式不正确时该如何处理?
后处理步骤:
1. 用正则表达式提取候选结构化文本
2. 尝试解析并捕获异常
3. 自动修复常见错误(如补全引号)
4. 或标记为异常请求重新生成
Q7有哪些工具可以辅助实现结构化输出?
- LangChain 的 StructuredOutputParser
- OpenAI 的 response_format 参数
- json-schema-validator 库
Q8OpenAI 是否支持结构化输出?
支持。在 API 请求中设置:
response = client.chat.completions.create(
model="gpt-4",
messages=[...],
response_format={"type": "json_object"}
)
---
模块 13
记忆系统
2节8.1 短期记忆
⭐ 核心概念Q1大模型中的短期记忆是如何实现的?
主要依赖模型的上下文窗口:
- 完整缓存整个对话历史
- 滑动窗口保留最近 N 轮对话
- 按 Token 数量截断历史(如仅保留最新 12k tokens)
Q2短期记忆的技术实现特点是什么?
- 依赖大模型原生的上下文窗口能力
- 将最近的输入输出保留在内存中处理
- 适用于近期交互的上下文维护
8.2 长期记忆
⭐ 核心概念Q1大模型中的长期记忆有哪些实现方法?
1. 摘要压缩:对长时间对话生成摘要并分层存储
2. 检索增强生成(RAG):将历史信息嵌入向量数据库,通过语义检索召回相关片段
Q2短期记忆和长期记忆在技术实现上有何区别?
| 特性 | 短期记忆 | 长期记忆 |
|---|---|---|
| 存储位置 | 内存/上下文窗口 | 外部持久化存储 |
| 实现方式 | 直接缓存 | 摘要、索引、嵌入 |
| 适用场景 | 近期交互 | 跨会话、长时间跨度 |
Q3LangChain 中常见的记忆模块有哪些?
| 模块 | 功能 |
|---|---|
| **ConversationBufferMemory** | 存储完整对话历史 |
| **SummaryBufferMemory** | 滑动窗口 + 摘要机制 |
| **VectorStoreRetrieverMemory** | 向量数据库语义检索 |
| **ConversationKGMemory** | 知识图谱实体关系记忆 |
Q4为什么大模型需要同时具备长短期记忆?
- 短期记忆:保障当前对话上下文连贯性和响应准确性
- 长期记忆:记住用户偏好、历史行为,支持跨时间个性化服务
Q5如何在实际应用中结合短长期记忆?
混合记忆架构:
1. 滑动窗口或缓冲内存管理最近几轮对话(短期)
2. 定期将重要信息摘要后存入数据库或向量库(长期)
3. 每次交互前,先从长期记忆中检索相关信息注入上下文
4. 再交由模型处理
Q6什么是 RAG 在长期记忆中的作用?
将历史对话或知识编码为向量并存入向量数据库:
- 后续对话中根据语义相似度检索最相关的记忆片段
- 将其作为上下文输入模型
- 突破模型上下文窗口限制
Q7记忆系统的两个基本操作是什么?
- Read:接收用户输入后,从记忆存储中读取相关信息增强当前输入
- Write:模型生成回复后,将本次输入输出写入记忆系统
Q8摘要压缩如何帮助实现长期记忆?
对长时间对话历史生成简洁摘要:
- 减少存储开销和计算负担
- 保留关键信息
- 模仿人类"模糊记忆"特点
Q9向量数据库在大模型记忆系统中扮演什么角色?
- 存储对话或文档的嵌入表示
- 支持高效的语义检索
- 将当前问题编码为向量,查找语义相近的历史记录
- 突破上下文窗口限制
模块 14
交互模式
1节9.1 Copilot vs Agent vs Embedding
⭐ 核心概念Q1Copilot 模式和 Agent 模式的核心区别是什么?
| 特性 | Copilot 模式 | Agent 模式 |
|---|---|---|
| 定位 | 协作型"副驾驶" | 自主型"智能管家" |
| 用户角色 | 持续输入指令,保留最终决策权 | 提供初始目标,后续自主运行 |
| 自主性 | 低,依赖用户反馈 | 高,独立规划执行 |
| 交互频率 | 频繁 | 低 |
Q2两种模式分别依赖哪些核心技术?
- Copilot:提示工程、多轮交互优化
- Agent:规划能力、记忆机制、工具调用、强化学习
Q3能否举例说明应用场景差异?
- Copilot:代码补全、文档润色等需人机协作的场景
- Agent:自动化测试、智能客服等可自主完成全流程的任务
Q4为什么说 Agent 比 Copilot 更接近通用人工智能?
Agent 具备:
- 自主规划能力
- 决策能力
- 执行能力
- 无需人为干预处理复杂任务链
Q5Copilot 是否可以升级为 Agent?
理论上可以。当 Copilot 系统增加:
- 任务规划能力
- 自动工具调用
- 闭环执行能力
模块 15
向量数据库
4节10.1 向量数据库选型
⭐ 核心概念Q1常见的向量数据库有哪些?
| 数据库 | 特点 | 适用场景 |
|---|---|---|
| **Milvus** | 开源、分布式、国产 | 大规模企业级应用 |
| **Pinecone** | 全托管、开箱即用 | 快速原型、实时搜索 |
| **Weaviate** | 多模态、语义搜索 | 智能问答、知识图谱 |
| **Qdrant** | 向量+元数据联合查询 | 推荐系统 |
| **Chroma** | 轻量级、嵌入式 | 小规模项目、原型开发 |
| **Faiss** | Facebook开发、CPU/GPU加速 | 研究、高性能场景 |
| **Annoy** | Spotify开发、内存占用低 | 静态数据集快速查询 |
Q2如何进行向量数据库的选型?
综合考虑:
- 功能特性
- 性能表现
- 成本预算
- 扩展性
- 团队技术栈
Q3Milvus 适合什么场景?
- 开源、支持 TB 级向量增删改查
- 近实时查询
- 分布式架构
- 适合电商平台商品推荐、图像检索、NLP 语义匹配等
Q4Pinecone 的优缺点是什么?
优点:
- 开箱即用、部署简单
- 支持高并发和低延迟
- 按使用量计费,长期成本高
- 数据控制权受限
Q5Weaviate 与其他向量数据库相比有何特点?
- 支持文本、图像等多模态数据
- 内置语义搜索能力
- 可构建知识图谱
- 复杂查询时可能延迟较高
Q6Qdrant 的核心优势是什么?
- 支持向量与元数据联合搜索
- 灵活的过滤和排序能力
- 适合结合属性条件与向量相似度检索
Q7Faiss 和 Annoy 有什么异同点?
| 特性 | Faiss | Annoy |
|---|---|---|
| 开发者 | Spotify | |
| 加速支持 | CPU/GPU | CPU |
| 元数据存储 | 不支持 | 不支持 |
| 适用场景 | 研究、高性能 | 静态数据集 |
Q8除了专用向量数据库,还有哪些数据库支持向量搜索?
- 开源:OpenSearch、PostgreSQL(pgvector)、ClickHouse
- 商用:Elasticsearch、Redis、Rockset、SingleStore
Q9为什么 PostgreSQL 被广泛用于向量搜索?
- 通过 pgvector 扩展支持向量存储与相似性计算
- 成熟稳定、生态丰富、事务支持完善
- 适合已使用 PostgreSQL 的系统,降低架构复杂度
10.2 向量数据库原理
⭐ 核心概念Q1向量数据库的核心原理是什么?
1. 将非结构化数据通过模型转化为高维向量
2. 利用相似性度量(余弦相似度、欧氏距离)
3. 结合高效的索引结构和 ANN 算法
4. 实现快速检索语义或特征上相似的数据
Q2什么是近似最近邻(ANN)搜索?为什么使用它?
在高维向量空间中快速查找与目标向量最相似的 Top-K 向量:
- 允许一定误差换取显著的性能提升
- 在大规模数据下实现毫秒级响应
Q3常见的向量索引构建方法有哪些?
| 方法 | 原理 | 特点 |
|---|---|---|
| **HNSW** | 多层图结构 | 高层稀疏快速跳转,低层密集精细查找 |
| **PQ** | 乘积量化 | 压缩向量,降低存储和计算开销 |
| **LSH** | 局部敏感哈希 | 相似向量映射到同一桶 |
Q4HNSW 索引是如何工作的?
构建多层图结构:
- 高层稀疏:快速大范围跳转
- 低层密集:精细查找
- 搜索时从顶层开始逐层下降
- 类似"省-市-区"路径逐步缩小范围
Q5PQ(乘积量化)如何优化向量存储和检索?
将高维向量划分为多个子向量:
- 对每个子空间进行聚类编码
- 用聚类中心代替原始向量分段
- 大幅压缩向量表示
- 减少存储占用和距离计算复杂度
Q6LSH(局部敏感哈希)在向量检索中起什么作用?
通过设计特殊的哈希函数:
- 使相似的向量更可能被哈希到同一个桶中
- 查询时只需在对应桶内搜索
- 大大缩小检索范围
Q7向量数据库与传统数据库的主要区别是什么?
| 特性 | 传统数据库 | 向量数据库 |
|---|---|---|
| 查询方式 | 精确匹配(关键词、ID) | 语义/特征相似性模糊匹配 |
| 数据类型 | 结构化数据 | 非结构化数据 |
| 典型应用 | 业务数据查询 | 推荐、图像搜索、语义搜索 |
10.3 相似度计算
⭐ 核心概念Q1什么是余弦相似度?
衡量两个向量方向之间夹角余弦值:
- 取值范围:[-1, 1]
- 值越接近 1,方向越相近
- 不关心向量长度,只关注方向
- 常用于文本和推荐系统
Q2什么是欧几里得距离?
两个向量在多维空间中的直线距离:
- 计算方式:各维度差值平方和的平方根
- 取值:≥ 0
- 距离越小表示越相似
- 适用于图像、视频等像素特征比较
Q3什么是曼哈顿距离?
两个向量在各维度上差值绝对值之和:
- 类似城市网格中沿道路行走的路径长度
- 取值:≥ 0
- 适合网格状结构数据
Q4余弦相似度和欧氏距离的主要区别是什么?
| 特性 | 余弦相似度 | 欧氏距离 |
|---|---|---|
| 关注点 | 方向相似性 | 空间绝对距离 |
| 受长度影响 | 否 | 是 |
| 适用场景 | 语义比较 | 几何空间精确匹配 |
Q5为什么文本相似性常用余弦相似度?
不同长度的文档可能导致向量长度差异大,但语义可能相近:
- 余弦相似度忽略长度只比较方向
- 更好捕捉语义相似性
- 欧氏距离会受文本长度影响
Q6图像检索中为何常用欧氏距离?
图像特征向量通常分布在连续高维空间:
- 欧氏距离能有效反映特征在空间中的实际差异
- 距离越近,图像内容越相似
Q7三种距离/相似度方法的取值范围分别是什么?
| 方法 | 取值范围 | 含义 |
|---|---|---|
| 余弦相似度 | [-1, 1] | 越大越相似 |
| 欧氏距离 | [0, +∞) | 越小越相似 |
| 曼哈顿距离 | [0, +∞) | 越小越相似 |
Q8在向量数据库搜索中如何选择这三种方法?
- 文本、语义匹配:余弦相似度
- 图像、视频特征匹配:欧氏距离
- 地理坐标或结构化网格数据:曼哈顿距离
Q9能否用一句话概括三者的直观区别?
- 余弦相似度比的是"方向"
- 欧氏距离比的是"直线远近"
- 曼哈顿距离比的是"沿着坐标轴走的总步数"
10.4 向量数据库工作流程
⭐ 核心概念Q1向量数据库的工作流程包含哪些主要步骤?
1. 数据处理:清洗和预处理
2. 向量化:通过 AI 模型转化为高维向量
3. 向量存储:高效格式存储
4. 索引构建:构建 HNSW 或 LSH 等索引
5. 相似性检索:计算相似度返回 Top-K
Q2为什么需要对数据进行预处理?
去除噪声和冗余信息,提升后续向量化质量:
- 文本:去除停用词、特殊符号、乱码
- 图像:降噪或归一化尺寸
Q3什么是向量化?常用的模型有哪些?
使用深度学习模型将非结构化数据转换为高维数值向量:
- BERT:句子 → 768 维语义向量
- ResNet:图像特征 → 图像向量
Q4向量数据库如何高效存储向量数据?
- 将向量与元数据(ID、标签、时间戳)关联存储
- 支持分布式分块存储
- 实现水平扩展和高性能读写
Q5向量数据库中的相似性检索是如何工作的?
1. 将查询内容转换为向量
2. 在已构建索引中计算相似度
3. 快速找出最相近的 Top-K 个结果
Q6向量数据库为何适合 AI 应用?
- AI 模型输出的特征通常是高维向量形式
- 向量数据库能高效存储和检索这些向量
- 支持语义理解、图像识别、推荐等任务
模块 16
MCP 协议
1节11.1 MCP 基础
⭐ 核心概念Q1什么是 MCP 协议?
MCP(Model Context Protocol,模型上下文协议):
- 由 Anthropic 于 2024 年 11 月 25 日提出
- 为大型语言模型提供统一接口
- 使模型能够动态连接外部数据源、工具和服务
- 实现"即插即用"功能
Q2MCP 协议的核心目标是什么?
建立通用标准,让 AI 模型可以:
- 无缝集成各种外部系统
- 实时获取上下文信息
- 调用工具
- 提升实用性与扩展性
Q3MCP 如何类比 USB-C 接口?
就像 USB-C 为不同设备提供统一连接方式:
- MCP 为 LLM 提供标准化接口
- 任何遵循协议的工具或数据源都可被模型直接使用
- 实现"一次集成,处处可用"
Q4MCP 在 AI 大模型系统中的主要作用有哪些?
1. 标准化数据接入:简化集成流程
2. 增强模型能力:支持实时访问最新数据和调用外部工具
3. 提升系统可维护性:实现模块化协作
Q5为什么 MCP 能提升 AI 系统的动态交互能力?
使模型摆脱对静态知识库的依赖:
- 运行时动态调用搜索引擎
- 访问本地文件
- 连接 API 服务
- 像人类一样根据需要获取信息
Q6MCP 如何解决传统 AI 模型的数据隔离问题?
传统模型依赖预训练数据或手动上传,难以实时获取新信息。MCP 通过标准化协议:
- 允许模型按需访问外部数据源
- 避免重复训练和上传
- 打破数据孤岛
Q7MCP 是否需要修改大模型本身?
不需要。MCP 是外部通信协议:
- 模型本身无需更改
- 只需通过符合 MCP 规范的服务器或适配器
- 接收和处理来自外部工具的上下文信息
Q8MCP 对 AI 生态系统的意义是什么?
推动 AI 生态的互联互通:
- 工具和平台遵循同一协议
- 可被任意兼容 MCP 的模型调用
- 促进开发者社区共建共享
- 加速 AI 应用创新与落地
Q9MCP 的官方文档地址是什么?
https://modelcontextprotocol.io/introduction
---
模块 17
RAG 数据预处理
3节12.1 数据清洗与格式化
⭐ 核心概念Q1在 RAG 应用中,为什么要对多源数据进行格式统一?
不同来源数据(PDF、HTML、Excel)编码、结构和格式各异。统一格式:
- 转为 UTF-8 编码
- 统一小写
- 避免模型误解词汇(如"iPhone"和"iphone"被视为不同词)
- 确保后续处理的一致性
Q2RAG 数据预处理中如何进行有效的数据清洗?
1. 去除重复内容:页眉页脚、重复段落
2. 过滤噪声符号:特殊字符、Markdown 标记
3. 处理敏感信息:使用正则或 PII 检测库删除手机号、邮箱等
4. 修复乱码:将特殊符号替换为空格
---
12.2 智能分块
⭐ 核心概念Q1为什么在 RAG 中需要对文本进行智能分块?
大模型有上下文长度限制(如 GPT-4 为 8k tokens):
- 需将长文本切分为适中的语义单元(300-500 字)
- 合理分块避免语义断裂
- 控制单块大小适配模型输入窗口
Q2常用的文本分块工具有哪些?有什么区别?
| 工具 | 特点 |
|---|---|
| **LlamaIndex RecursiveCharacterTextSplitter** | 按"标题→段落→句子→字符"层级递归切分,注重语义完整性 |
| **Hugging Face TokenTextSplitter** | 按 token 数量精确分割,适合与特定 tokenizer 匹配 |
Q3在数据预处理流程中,为什么要做块间重叠处理?
块间重叠(如前一块结尾的 100 字作为下一块开头):
- 防止因强制切分导致跨段落的完整语义被割裂
- 保障上下文连续性
- 在问答时能更好还原原始语境
12.3 语义增强与索引
⭐⭐ 进阶考察Q1元数据标注在 RAG 预处理中起什么作用?
元数据标注(时间、地点、关键词、部门)为知识块增加结构化信息:
- 支持检索时进行条件过滤(如"只查 2025 年的政策文件")
- 提升检索精准度和效率
Q2什么是语义增强?如何提升 RAG 效果?
语义增强包括:
1. 元数据标注:通过规则或 LLM 提取关键标签
2. 向量化:使用 Sentence-BERT、BGE-M3 等模型生成高质量向量
使系统不仅能基于关键词匹配,还能理解语义相似性。
Q3RAG 中为什么要构建混合索引(向量+关键词)?
- 单一向量检索可能漏掉关键词匹配但语义相近的内容
- 纯关键词检索无法理解同义表达
- 构建混合索引结合两者优势
- 通过重排序融合结果,提升检索全面性和准确性
Q4如何选择合适的向量化模型进行 RAG 预处理?
| 场景 | 推荐模型 |
|---|---|
| 通用场景 | Sentence-BERT |
| 多语言/高精度 | BGE-M3 |
| 长文档理解 | ColBERTv2 |
Q5RAG 数据预处理的最终输出是什么?存储在哪里?
最终输出:
- 带有元数据标注的文本块
- 对应的向量表示
- 关键词索引
- 向量数据库(Milvus、Pinecone):语义检索
- 关键词搜索引擎(Elasticsearch):BM25 和过滤查询