Appearance
1. RAG系统中的文档分块(Chunking)策略有哪些?如何选择合适的分块方式?
文档分块是 RAG 系统中的关键步骤,不同的分块方式会显著影响检索质量和生成效果。
常见的分块策略
固定大小分块
方式:按固定字符数、词数或标记数分割
优点:实现简单、开销小
缺点:容易打断语义,影响模型理解
基于句子分块
方式:以句子作为最小单位
优点:基本保持语义完整
缺点:句子长短不均,块大小不稳定
基于段落分块
方式:按段落进行切分
优点:保持较完整的语义单元
缺点:段落长度差异较大
基于语义分块
方式:通过语义边界检测进行分块
优点:语义完整性最好,检索质量高
缺点:实现复杂、计算成本高
递归分块
方式:先大块再逐层细化
优点:能适配多层级结构
缺点:逻辑复杂、处理成本高
滑动窗口分块
方式:使用重叠窗口切分
优点:减少边界信息丢失
缺点:存储增加,存在冗余
如何选择合适的分块方式
文档类型与结构
结构化文档适合段落/章节分块
非结构化文本需更灵活或语义分块
查询模式
精准型查询 → 更小块
综合理解型查询 → 更大块
模型上下文窗口
- 分块不得超过模型的可处理长度
检索精度要求
更高的召回精度 → 更小块
更高的语义完整度 → 更大块
资源限制
- 资源紧张时优先使用简单策略
领域特性
- 如法律文档可按条款分块
举例子类比记忆
切菜类比:
固定大小分块像“按照固定长度切黄瓜”,简单但可能切到尴尬处。
句子/段落分块像“按自然纹路切肉”,更贴合结构但大小参差不齐。
语义分块像“按食材纹理方向切”,最好但需要经验和技巧。
滑动窗口像“切片时每刀稍微重叠”,确保不会漏掉关键信息。
知识点易错提醒
只强调分块大小而忽略语义完整性的重要性是常见错误。
将“分块越小越好”当成普适规律,实际不同任务有不同最佳粒度。
忽略模型上下文窗口,导致块过大无法被模型处理。
只用单一策略不做实验验证,容易导致检索效果不稳定。
延伸面试提问及应答建议
1. 面试官可能追问:为什么滑动窗口能提高检索效果?
简答建议:因为重叠部分减少了语义边界处的信息损失,使得检索更稳定。
示例答句:
“滑动窗口通过为相邻块提供重叠区域,降低了信息在分块边缘被截断的风险,从而提高检索的召回率和稳定性。”
关键要点清单:
边界信息不会丢失
提高召回率
更适合长文本、概念密集内容
回答模板:
“滑动窗口的核心作用是____,通过____方式减少了____问题,因此在____场景下表现更好。”
可能延伸追问及应对:
- 重叠比例如何选择? → 回答:需要根据文本密度和模型窗口大小实验调参。
2. 面试官可能追问:语义分块为什么效果好但不常用?
示例答句:
“语义分块能产生最自然的语义边界,但成本高,需要额外模型或算法,因此在生产环境常用混合策略。”
关键要点清单:
效果好但成本高
需额外模型支持
大规模应用 expensive
回答模板:
“语义分块提高了____,但由于____和____,实际中通常通过混合策略折中。”
可能延伸追问:
- 如果要在高精度场景中实施语义分块,你会如何优化?
→ 可以回答“用轻量模型做语义边界检测、先粗分再语义细分”等。
3. 面试官可能追问:如何为一个新领域选择分块方案?
示例答句:
“先根据语料结构选择初步策略,再用小规模实验调参,找到兼顾性能和成本的最佳粒度。”
关键要点清单:
基于文本结构初选
实验验证
平衡检索效果与资源
回答模板:
“我会先根据____,初步使用____分块,再通过实验观察____指标并调整分块粒度。”
可能延伸追问:
- 如何设计分块实验?
→ 可以回答“通过 Top-k 准确率、检索召回、生成回答相关性评估”。
2. RAG系统中常用的向量数据库有哪些?它们各有什么特点?
RAG系统中的向量数据库是用于存储和检索文本嵌入向量的核心组件。以下是常用向量数据库及其特点。
Faiss (Facebook AI Similarity Search)
特点:
Facebook开发的高性能向量搜索库
支持十亿级向量的高效相似性搜索
提供多种索引类型(精确搜索、近似搜索)
C++实现并提供Python绑定
优势:搜索效率极高,适用于大规模应用
局限:属于搜索库而非完整数据库系统,持久化需额外实现
Pinecone
特点:
全托管云服务
实时更新和查询
支持元数据过滤和混合搜索
自动扩展
优势:生产环境友好,无需维护
局限:SaaS服务有成本,数据存储在第三方
Milvus
特点:
开源向量数据库
多种索引类型和相似度方法
支持混合搜索(向量+标量)
分布式架构,可水平扩展
优势:功能全面、社区活跃
局限:配置与维护复杂度较高
Weaviate
特点:
开源向量搜索引擎和知识图谱
支持语义搜索与GraphQL
多模态数据支持(文本、图像)
内置多种向量索引
优势:知识图谱能力强,查询灵活
局限:学习曲线较陡,资源需求高
Chroma
特点:
专为RAG设计的轻量级嵌入式向量数据库
Python原生、易集成
支持多种Embedding模型
优势:简单易用,适合小型项目与原型
局限:大规模场景下性能有限
Qdrant
特点:
开源向量相似度搜索引擎
实时过滤和复杂查询
提供REST API及多语言客户端
支持集合级CRUD
优势:查询灵活,性能优良
局限:社区规模相对较小
Elasticsearch with Vector Search
特点:
在ES基础上扩展向量搜索
结合全文检索与向量检索
丰富生态工具链
支持复杂聚合与分析
优势:可利用现有ES基础设施
局限:纯向量检索性能不如专用数据库
pgvector (PostgreSQL扩展)
特点:
PostgreSQL的向量扩展
支持相似度搜索
可结合关系型数据库功能
支持多种距离计算方法
优势:事务性强,可与业务数据库深度整合
局限:大规模向量下性能有限
选择向量数据库的考虑因素
规模需求:数据量、QPS
性能要求:延迟、吞吐
部署方式:云、本地、嵌入式
集成需求:与现有系统兼容性
功能需求:元数据过滤、多模态支持
成本:开源 vs 商业
安全隐私:数据位置与访问控制
举例类比记忆
把向量数据库类比为不同类型的仓库:
Faiss 像超高速临时仓库,只负责极快搜索,但不负责长期存储。
Pinecone 像全托管物流中心,所有存储、扩容都自动完成。
Milvus 像可定制的工业级仓库,灵活强大但需要专业维护。
Chroma 像小型工作间,开发快但不适合放海量货物。
pgvector 像在传统仓库里增加一个“向量区域”,管理方便但空间有限。
知识点易错提醒
容易只记名字,而忽略更多重要的对比维度,例如是否支持分布式、是否托管、是否支持混合搜索。
Faiss 常被误以为是完整数据库,它实际上是“向量搜索库”。
Pinecone、Weaviate 等云产品的成本与数据托管位置是面试官常问的点。
pgvector 不适用于极大规模场景,这是评估时容易忽视的限制。
Chroma 简单易用但不意味着适用于生产,面试中需明确其定位。
延伸面试提问及应答建议
可能的面试追问角度 1:如何在工程中选择合适的向量数据库?
应答建议:
示例答句:
选择向量数据库应基于规模、延迟、部署方式与维护成本。如果我需要十亿级向量并要求极低延迟,我会优先考虑 Milvus 或 Pinecone;如果是小型RAG系统快速迭代,我会用 Chroma;如果需要与业务数据库深度集成,我会用 pgvector。关键要点清单:
数据规模
实时性与延迟要求
本地 vs 云
成本与维护复杂度
回答模板:
先说明评估维度,再给出不同场景下的选择示例,体现工程经验。可能延伸追问:
例如“假设你在金融行业如何选择?”可以回答需考虑合规性与数据不能出域,因此倾向本地部署的 Milvus 或 pgvector。
可能的面试追问角度 2:Faiss、Milvus 和 Pinecone 的根本区别是什么?
应答建议:
示例答句:
Faiss 是向量搜索库,负责检索但不负责存储;Milvus 是完整的分布式向量数据库;Pinecone 则是云端托管服务,提供企业级的可扩展性与自动维护。关键要点清单:
库 vs 数据库
自托管 vs 云托管
可扩展能力
回答模板:
先分类:库、数据库、托管服务,再解释核心差异。延伸追问:
“如果要构建企业级 RAG 系统,你会选哪一个?”
可从 SLA、延迟、成本、数据安全等角度说明优缺点。
可能的面试追问角度 3:向量数据库在 RAG 中的瓶颈是什么?
应答建议:
示例答句:
向量数据库的瓶颈主要包括向量规模增长导致的查询延迟、索引重建的成本、以及向量更新实时性。对于大规模系统,需要选择支持 ANN 索引和分布式部署的数据库,例如 Milvus 或 Pinecone。关键要点清单:
延迟
索引构建
实时更新
回答模板:
描述瓶颈 → 提出解决方法 → 结合场景延伸追问:
“如果查询延迟无法满足要求,你会如何优化?”
可以回答:减少向量维度、使用 HNSW 索引、提高缓存命中率或分片部署等。
3. 什么是文本嵌入(Embedding)?什么是向量检索?
文本嵌入(Embedding)是将文本通过深度模型转化为高维向量的表示方式。这些向量通常具有数百甚至上千维,能够捕捉句子的语义、语气、主题结构等特征。在同一向量空间中,不同文本的语义相似度可以通过向量间的距离进行衡量,例如使用余弦相似度或欧氏距离。
文本嵌入的核心概念
将文本映射到高维连续向量空间
相似语义的文本在该空间中距离更近
嵌入通常由预训练语言模型生成,如 BERT、GPT、FastText 等
向量检索的概念
向量检索是基于文本嵌入进行相似性查找的一种检索方式。它依赖向量数据库或近似最近邻(ANN)检索引擎,将大量数据的向量存储起来,再通过距离度量方法查找与查询向量最靠近的结果。
向量检索的关键点
将所有数据转换为向量并存储
查询时将输入映射为向量
使用距离度量方法寻找最近邻,如
余弦相似度:
欧氏距离:
举例类比记忆
文本嵌入像是给句子拍“语义照片”,并把照片压缩成数字编码(向量)。
向量检索就像在一堆“语义照片”中找与某张照片最像的几张。
也可以类比为:每段文本都有一个“语义坐标”,向量检索就是在坐标系里找离你最近的点。
知识点易错提醒
忽略“嵌入空间结构”是 Embedding 的关键,而不仅仅是把文本变成数字。
误以为向量检索等同于关键词检索,两者本质不同:前者基于语义距离,后者基于文本匹配。
常见误区是混淆欧氏距离和余弦相似度,它们适用的场景并不完全相同。
延伸面试提问及应答建议
1. 面试追问:为什么 Embedding 能捕捉语义?
应答示例:
Embedding 通过深度模型在大规模文本中学习词与词、句与句之间的共现与上下文关系,模型在训练过程中优化向量,使语义相似的文本在高维空间中距离更近。
关键要点:
基于上下文学习
分布式表示
高维空间的语义聚类特性
回答模板:
“因为嵌入向量是在大量文本数据中通过上下文学习得到的分布式表示,使得具有相似语义的文本在嵌入空间中更接近。”
可能延伸提问:
为什么需要高维空间
维度过高会遇到哪些问题(如维度灾难)
2. 面试追问:向量检索比关键词检索好在哪里?
应答示例:
向量检索能够处理同义词、改写句、语义相近的表达,不依赖关键词匹配,因此在语义搜索中效果更好。
关键要点:
语义级检索
对同义替换鲁棒
在非结构化文本中表现更强
回答模板:
“向量检索是基于语义相似度查找结果,比基于字面匹配的关键词检索更能找到语义相关内容。”
可能延伸提问:
何时应使用关键词检索而非向量检索
向量检索的计算复杂度如何优化(如 ANN、HNSW)
4. 为什么大模型应用需要向量检索?
大模型应用需要向量检索,因为传统关键词检索只能进行字面匹配,无法理解语义、上下文或表达方式的变化,而向量检索通过嵌入表示实现语义级别的相似度匹配。
向量检索的优势
容忍同义与多样化表达
嵌入模型能将语义相近的句子映射到近似向量,解决关键词必须精确匹配的问题。
例如:“快速排序效率提升”与“如何加快快速排序”词面完全不同,但语义相近,因此向量检索可以互相命中,提高召回率。
可衡量语义相似度
向量空间距离是连续的,可实现基于相似度的排序,而非简单“匹配/不匹配”。
向量数据库通常支持基于距离的排序,并支持阈值、topK 等灵活设定。
高维匹配可综合多特征
嵌入模型将词语、上下文、语法、风格等信息编码到高维向量中。
因此能捕捉复杂的语义关系,如语义相似、情感相似、风格接近等,这是关键词检索无法实现的。
举例子类比记忆
关键词检索像“按字查字典”,必须精确匹配。
向量检索像“按意思找朋友”,你即便记不住朋友的名字,也能根据特点(性格、外貌、习惯)快速定位。
又像找歌:关键词检索只能搜歌名,而向量检索更像“哼歌识曲”,帮你根据模糊但有语义的信息找到对应结果。
知识点易错提醒
误以为“向量检索只是更智能的关键词检索”,但两者本质不同:向量检索依赖语义空间距离,与关键词无关。
忽略召回率提升的重要性。很多应用场景(如 RAG)召回比精确匹配更关键。
容易只讲“高维向量包含更多信息”,但没指出其核心价值是将语义映射为可计算的距离。
延伸面试提问及应答建议
1. 向量检索在 RAG 中具体解决了什么问题?
应答示例:向量检索解决了检索阶段的语义匹配问题,使模型在生成前获取到更相关的上下文,从而减少幻觉并提升回答质量。
关键要点:语义召回、减少幻觉、context relevance、topK 检索。
回答句式:向量检索主要用于……它有效解决了……
延伸追问:为什么不是关键词检索?如何评估召回质量?
2. 向量检索的相似度度量有哪些?如何选择?
应答示例:常见度量包括余弦相似度、点积、欧氏距离。选择方式通常取决于向量的归一化方式与数据分布。
关键要点:归一化→用余弦;未归一化→点积或欧氏;计算与速度影响。
回答句式:如果向量……通常选择……
延伸追问:高维空间中距离计算为什么更耗资源?
3. 向量检索为什么需要 ANN(Approximate Nearest Neighbor)?
应答示例:因为高维空间计算精确最近邻的成本过高,ANN 能在精度和速度之间取得平衡,满足实时需求。
关键要点:高维诅咒、速度要求、近似替代精确计算。
回答句式:在高维空间中……
延伸追问:HNSW、IVF、PQ 的区别是什么?
5. 有哪些类型的向量索引?
Flat(暴力搜索)
特点:与每个向量逐一计算距离,精度最高,完全无预处理
优点:
精度最高
实现最简单
缺点:
复杂度随数据量线性增长
查询速度最慢
不适合大规模数据
适用场景:小规模数据、测试阶段
IVF(倒排文件索引)
原理:
使用 k-means 将所有向量聚类为多个中心
数据按中心分配到对应桶
查询时只搜索最近的桶
优点:查询速度快
缺点:
聚类质量影响精度
构建(预训练)较慢
适用场景:百万级数据
HNSW(Hierarchical Navigable Small World)
原理:
构建多层图结构
高层稀疏,用于粗查
底层密集,用于精查
查询时从高层跳到底层,逐步逼近目标近邻
与跳表类比:
相同点:
多层结构
节点与近邻节点相连
查询和插入采取逐层下降方式
期望查询复杂度均为 (O(\log n))
区别:
适用数据不同:一维有序数值 vs 高维向量
排序依据不同:可比较的键 vs 距离度量
优点:
查询速度快
精度接近 Flat
缺点:
构建速度慢
占用内存较大
适用场景:千万级数据
PQ(Product Quantization)
原理:
将高维向量切分为多个子向量
将高维空间分解成多个子空间
对每个子空间进行量化并编码压缩
优点:
存储空间节省极大
可以与 IVF 或 HNSW 组合使用
缺点:
精度下降明显
单独使用无法加速查询
适用场景:千万级数据(通常与 IVF 组合成 IVF-PQ)
举例类比记忆
Flat 像是逐个翻书找关键词,最慢但最准。
IVF 像把图书按主题分类到书架,只需要在最相关的几个书架找。
HNSW 像商场的导览图,从楼层概览(高层)逐步下到具体店铺(底层)。
PQ 像把一本长书分成多个章,每章再建立目录,方便压缩管理。
知识点易错提醒
误以为 PQ 可以独立加速查询,实际上 PQ 只有压缩作用,需要配合 IVF 等索引才有速度提升。
容易混淆 IVF 的预训练 与模型训练,它只是聚类构建步骤。
误认为 HNSW 查询复杂度是 (O(n)),实际上其平均复杂度为 (O(\log n))。
IVF 的精度下降不是必然严重,而是取决于聚类质量和
nprobe设置。
延伸面试提问及应答建议
1. 为什么 HNSW 能做到兼顾速度与高精度?
示范回答:
HNSW 通过分层图结构实现粗到细的搜索路径,高层节点稀疏、易跳跃定位大致区域,而底层节点密集负责精确查找,使得搜索路径更短但仍能覆盖近邻,从而在保持接近 Flat 精度的同时大幅提升速度。
关键要点:
多层 small-world graph
粗查 + 精查结合
路径缩短
精度接近暴力搜索
回答模板:
“HNSW 的核心在于其分层导航图机制,上层负责快速定位区域,下层进行精查,因此查询路径短且保持较高召回。”
延伸追问:
构建 HNSW 时哪些参数影响召回与速度?
如何处理高维向量导致的近邻退化问题?
2. IVF 的精度能否接近 Flat?如何调参?
示范回答:
IVF 的精度依赖聚类质量和查询时的桶数量 nprobe。通过增大 nprobe 或提高聚类中心数量,可以使精度逼近 Flat,但同时会牺牲部分速度。
关键要点:
聚类质量
nprobe的作用中心数量(nlist)
精度与速度权衡
回答模板:
“IVF 的精度主要受查询桶数量影响,增加 nprobe 可以提升召回,使结果接近 Flat,但计算量也随之增加。”
延伸追问:
如何估算最佳
nlist和nprobe?大规模向量中如何保证聚类质量?
3. PQ 为什么会造成精度下降?
示范回答:
因为 PQ 将向量分片并在每个子空间量化,会使原始向量的信息发生不可逆的压缩,距离计算使用编码近似值,因此产生误差。
关键要点:
分片
子空间量化
损失不可逆
距离近似误差
回答模板:
“PQ 使用量化后的编码近似原向量,因此距离计算是近似的,这会带来一定的精度损失。”
延伸追问:
如何减少 PQ 的量化误差?
为什么 PQ 常与 IVF 组合(IVF-PQ)?
6. 实践中,如何使用向量嵌入构建检索系统?
在实际应用中,向量嵌入(Embedding)用于将文本或其他数据转化为高维向量,通过向量间的相似度进行检索。构建检索系统的关键环节包括嵌入模型选型、向量维度设定、向量数据库选择、索引与查询算法设计以及相似度度量方式。
嵌入模型选型
通用预训练Embedding模型
如 Sentence-BERT、BGE 等。
优点:海量语料训练,语义泛化强,无需自行训练。
缺点:模型较大,推理成本较高。
领域专用Embedding模型
对特定领域文档(如医学论文)可使用微调后的嵌入模型。
优点:提高特定领域语义匹配准确性。
向量维度设定
维度过低可能无法充分表示语义,维度过高增加存储和计算成本。
常见维度:256到1536,中等维度如768可作为折中选择,兼顾查询效果和性能。
向量数据库选择
FAISS:本地部署,性能优秀,缺乏分布式支持。
Milvus:开源,支持集群扩展,适合分布式大规模系统。
Elasticsearch:可结合关键词过滤和布尔查询,适合已有ES技术栈,但向量检索性能略逊于专用库。
索引与查询算法
使用近似最近邻(ANN)算法加速检索。
HNSW索引:将向量组织成分层图结构,通过局部连通和跳跃导航快速定位相似向量,支持动态插入与删除,适合大规模语义检索。
相似度度量方式
余弦相似度:衡量向量方向一致性,需归一化,适合文本、语义任务,是RAG系统最常用方式。
欧氏距离:衡量向量直线距离,不需归一化,适合图像、坐标类任务。
举例子类比记忆
嵌入模型选择:通用模型像“多功能瑞士军刀”,领域模型像“专业手术刀”,各有用途。
向量维度:维度低像“压缩照片”,信息丢失;维度高像“原始高清图”,占用大。
数据库选择:FAISS像单机高性能跑车,Milvus像可扩展的卡车队,Elasticsearch像多功能SUV。
相似度度量:余弦相似度像比较两个方向箭头是否一致,欧氏距离像量直线距离。
知识点易错提醒
混淆余弦相似度与欧氏距离的适用场景。
忽略向量维度对存储和查询性能的影响。
忽视数据库的扩展性需求和索引算法对查询效率的影响。
延伸面试提问及应答建议
问:为什么HNSW比传统线性扫描更适合大规模向量检索?
答:HNSW通过分层图结构减少搜索空间,实现亚线性复杂度查询,同时支持动态插入和删除,适合大规模场景。问:选择余弦相似度而不是欧氏距离的理由?
答:余弦相似度关注向量方向而非长度,更适合文本语义匹配,避免向量长度差异影响相似度。问:在嵌入模型选型上,如何权衡通用模型和领域模型?
答:若任务覆盖广泛语义场景且需快速部署,选通用模型;若任务集中于特定领域且精度要求高,选领域微调模型。
