万字详解面试题库

向量数据库篇 · AI Agent核心技术详解

向量数据库是AI Agent记忆模块的核心组件,也是RAG系统的关键基础设施。本文整理了18道向量数据库核心面试题,涵盖基础概念、选型对比、检索原理、性能优化、实战开发等核心知识点,帮助你在面试中从容应对。
1 向量数据库在AI Agent中解决什么问题
参考答案

第一,非结构化数据的语义存储。传统数据库存的是结构化表格,无法直接存储文本、图片这类非结构化数据。向量数据库把这类数据转成高维向量,实现语义层面的存储。

第二,语义相似度检索。传统数据库只能做精确匹配,比如查"苹果"就找不到"iPhone"。向量数据库基于向量距离计算语义相似度,能找出意思相近的内容。

第三,高效的大规模检索。面对百万甚至千万级别的向量数据,向量数据库通过专门的索引算法(如HNSW、IVF),把检索复杂度从O(N)降到O(logN),保证毫秒级响应。

在AI Agent里,向量数据库通常用来存知识库和对话历史,让Agent能快速找到相关的背景信息。

延伸追问
面试官可能会问向量数据库和普通数据库能不能一起用。答案是肯定的,结构化数据(如用户ID、权限)存关系型数据库,非结构化内容(如文档、对话)存向量数据库,两者配合使用效果最佳。
2 向量数据库和传统关系型数据库的核心区别
参考答案

存储方式不同。关系型数据库存的是行和列,数据之间通过主键外键关联。向量数据库存的是高维向量,每个向量代表一段文本或图片的语义特征。

检索逻辑不同。关系型数据库用SQL做精确查询,条件必须完全匹配。向量数据库用相似度算法(余弦相似度、欧氏距离)做模糊匹配,找的是"最像"的结果而不是"完全相等"的结果。

适用场景不同。关系型数据库适合存配置信息、业务数据这些结构化内容。向量数据库适合存知识库、用户画像、推荐特征这些需要语义匹配的内容。

实际项目中两者往往是互补关系,不是替代关系。

延伸追问
可能会问什么数据该存向量数据库。判断标准是:如果需要按"意思相近"来查询,就存向量库;如果需要按"字段相等"来查询,就存关系型数据库。
3 RAG系统中向量数据库的完整工作流程
参考答案

RAG系统里向量数据库的工作分为两个阶段:

索引阶段(离线):

第一步是文档切分。把长文档切成合适大小的片段,通常200-500字一段,既能保留完整语义,又不会太长导致检索不精准。

第二步是向量化。用Embedding模型(如BGE、M3E)把文本片段转成向量,通常是768维或1024维。

第三步是入库。把向量连同原始文本、文档ID、分类标签等元数据一起写入向量数据库,同时创建向量索引加速后续检索。

查询阶段(在线):

用户提问后,先把问题转成向量,然后在向量数据库里做相似度搜索,召回Top K个最相关的文档片段,最后把这些片段拼进Prompt传给大模型生成答案。

延伸追问
可能会问切分粒度怎么把握。太小的片段会丢失上下文,太大的片段会引入噪声。建议先按段落边界切分,再根据实际检索效果微调。
4 Embedding模型选型要考虑哪些因素
参考答案

选型主要考虑四个维度:

语言适配。中文场景优先选BGE、M3E、Text2Vec这些中文模型,英文场景可选OpenAI的text-embedding-ada-002或sentence-transformers系列。

向量维度。维度越高表达能力越强,但存储和计算成本也越高。常见有384维、768维、1024维,一般768维是性价比比较好的选择。

上下文长度。模型能处理的最大文本长度,要覆盖你的文档片段大小。常见有512、1024、2048、8192,如果文档片段较长,要选长上下文模型。

效果指标。参考模型在C-MTEB、MTEB等评测集上的MRR、NDCG、Recall@K指标,但也要在自己的业务数据上实测验证。

实际选型建议先用开源模型验证效果,达不到要求再考虑商用API。

延伸追问
可能会问怎么评估Embedding效果。可以构建自己的测试集,包含一批问题和对应的标准答案文档,计算检索的准确率和召回率。
5 向量数据库有哪些主流选择,各有什么特点
参考答案

常见的向量数据库及其特点:

Milvus - 专门的向量数据库,支持分布式部署、多种索引类型、混合查询,适合大规模生产环境,是目前国内用得最多的开源方案。

Faiss - Facebook开源的向量检索库,适合小规模本地部署,支持多种索引算法,但不支持分布式和持久化,一般用于原型验证。

Pinecone - 托管云服务,开箱即用但成本较高,适合快速验证想法,不适合数据敏感的场景。

pgvector - PostgreSQL的向量扩展,适合已有PG基础设施的项目,可以复用现有的运维能力。

Elasticsearch - 也支持向量搜索,适合需要同时做关键词搜索和向量搜索的混合场景。

选型要根据数据规模、查询QPS、团队技术栈、运维能力综合考虑。

延伸追问
可能会问Milvus和Faiss怎么选。数据量小、快速验证用Faiss,数据量大、生产环境用Milvus。
6 向量索引HNSW和IVF的区别及选型
参考答案

HNSW和IVF是两种主流的向量索引算法:

HNSW(分层导航小世界图)基于图结构构建索引,查询时从顶层开始逐层向下导航,直到找到最近邻。特点是构建慢、查询快、精度高,适合数据相对静态、查询频繁的场景。

IVF(倒排文件索引)先把向量聚类成多个簇,查询时只检索最相关的几个簇。特点是构建快、查询相对慢一些,适合数据频繁更新的场景。

选型建议:

数据量小(万级以内)、对准确率要求极高(如医疗、法律)选IVF_FLAT暴力检索。

数据量大(十万级以上)、对查询速度要求高(如客服系统)选HNSW。

数据频繁更新选IVF,数据相对静态选HNSW。

延伸追问
可能会问HNSW的参数怎么调。efConstruction控制构建时的搜索范围,越大精度越高但构建越慢;efSearch控制查询时的搜索范围,越大精度越高但查询越慢。建议根据实际数据量和精度要求做压测调优。
7 召回和重排的区别是什么
参考答案

召回和重排是检索流程中两个不同的阶段:

召回阶段的目标是从海量文档中快速筛选出可能相关的候选集。追求高召回率,宁可错杀不可放过。通常用向量相似度搜索,速度快但精度一般,召回几十到几百个结果。

重排阶段的目标是对召回的候选集进行精确排序,找出最相关的文档。追求高准确率,确保排在前面的都是真正相关的。通常用Cross-Encoder等更精确的模型,直接计算Query和文档的交互相关性,速度较慢但精度高,一般只处理Top K个候选。

为什么分两阶段:

如果直接用Cross-Encoder对所有文档打分,计算量太大无法接受。先用向量检索快速召回候选,再用重排模型精确排序,是效率和效果的平衡。

延伸追问
可能会问重排模型有哪些选择。常见的有Cross-Encoder、bge-reranker、Cohere Rerank等,可以根据精度和性能要求选择。
8 如何提高向量检索的准确率
参考答案

提高检索准确率可以从三个层面入手:

查询优化层面:

查询扩展 - 用LLM把用户问题改写成多个同义表达,增加命中概率。

查询分解 - 把复杂问题拆成多个子问题分别检索。

HyDE技术 - 用LLM生成假设答案,再用答案去检索相似文档。

索引优化层面:

文档切分策略优化 - 按语义边界切分而不是固定长度。

元数据增强 - 给文档打上标签、分类、时间等元数据,检索时先过滤再搜索。

摘要索引 - 存储文档摘要用于粗排,原始文本用于精排。

重排序层面:

用更精确的模型对召回结果二次排序,比如用Cross-Encoder计算问题和文档的相关性分数。

延伸追问
可能会问HyDE的原理。核心是用LLM先根据问题生成一个假设的答案,然后用这个答案去检索相关文档,解决用户问题和文档表述不一致的问题。
9 向量数据库的相似度算法有哪些,各适合什么场景
参考答案

常用的相似度算法有四种:

余弦相似度计算两个向量夹角的余弦值,值域[-1, 1],1表示方向完全相同。优点是对向量长度不敏感,只关注语义方向,适合文本语义匹配。这是AI Agent中最主流的算法。

欧氏距离计算向量空间中的直线距离,距离越小越相似。对向量绝对差异敏感,适合多模态数据检索(如图像+文本匹配)。

点积直接计算向量对应元素相乘再求和。计算最快,适合大规模检索,但受向量长度影响,需要配合归一化使用。

曼哈顿距离计算各维度差值的绝对值之和。计算速度快,适合低维度向量、对检索速度要求高的轻量场景。

实际应用中,文本检索首选余弦相似度,多模态检索可以考虑欧氏距离。

延伸追问
可能会问为什么向量检索比关键词检索快。向量检索使用近似最近邻算法如HNSW,时间复杂度O(logN),而暴力搜索是O(N),向量索引大幅降低了计算量。
10 向量数据库的增量更新如何实现
参考答案

文档更新处理有三种策略:

全量重建最简单的方式,文档更新后重新切分、向量化、构建索引。适合更新频率低的场景,但数据量大时耗时很长。

增量更新更高效的方式,只处理变更的文档。新文档直接添加到索引,删除的文档从索引中移除,修改的文档先删除旧版本再添加新版本。

索引分区按时间或类别分区,更新时只重建受影响的分区,减少重建范围。

更新策略:

实时更新 - 文档变更立即触发索引更新,适合对实时性要求高的场景。

定时更新 - 比如每小时或每天批量更新一次,适合更新频率适中的场景。

还要考虑更新期间的查询服务不中断,通常采用双索引切换或者索引版本管理来实现平滑过渡。

延伸追问
可能会问如果文档量很大,全量重建耗时很长怎么办。建议采用增量更新策略,或者使用支持增量更新的向量数据库,或者设计索引分区策略减少每次重建的范围。
11 向量数据库的topK参数和分块大小怎么选择
参考答案

这两个参数都需要通过实验确定,没有固定标准。

分块大小的考虑:

太小会丢失上下文信息,比如一个段落被切成多块,每块单独看都语义不完整。

太大会降低检索精度,一个块包含太多内容,只有一小部分相关,会干扰模型注意力。

通常几百个Token比较合适,比如256到512之间。还要考虑文档结构,按段落或章节边界切分比固定长度切分效果更好。

topK参数的选择:

要权衡召回率和成本,K太小可能漏掉相关信息,K太大会增加噪声和成本。

通常先设置一个较大的值比如10到20,然后通过实验找到最优值。

评估方法是用测试集测试不同K值的Recall和Precision,找到平衡点。

实际应用中还可以动态调整,对于复杂问题增大K值,简单问题减小K值。

延伸追问
可能会问有没有自动确定分块大小的方法。可以用语义切分,根据句子或段落的语义完整性自动确定切分点,而不是固定长度切分。
12 向量数据库的元数据过滤怎么用
参考答案

元数据过滤是提升检索效率的重要手段。

基本思路:在向量化存储时,除了存储向量本身,还要存储相关的元数据,比如文档ID、分类标签、创建时间、来源渠道等。检索时先通过元数据条件过滤,缩小搜索范围,再在这个子集上做向量相似度搜索。

典型场景:

按时间过滤 - 只检索最近一个月的知识。

按分类过滤 - 只检索某个产品线的文档。

按权限过滤 - 只检索用户有权限查看的内容。

实现方式:

Milvus等向量数据库支持标量字段索引,可以在向量检索前先用标量条件过滤,减少向量计算的数据量。

延伸追问
可能会问元数据过滤和向量检索的顺序。通常是先元数据过滤缩小范围,再向量检索,这样效率最高。如果反过来先做向量检索再过滤,会浪费很多计算资源在不相关数据上。
13 向量数据库的部署和运维要注意什么
参考答案

生产环境部署要考虑以下几个方面:

高可用:多实例部署,负载均衡,避免单点故障。数据要有备份机制,防止数据丢失。

性能监控:监控检索延迟、吞吐量、存储空间使用率。设置告警阈值,及时发现性能瓶颈。

容量规划:根据向量维度和数据量估算存储需求。向量数据比原始文本大得多,768维的float32向量每个占3KB左右。

索引维护:定期检查索引状态,数据量大的时候考虑分片策略。增量更新频繁时要关注索引碎片问题。

安全配置:如果数据敏感,要做好访问控制,考虑数据加密传输和存储。

延伸追问
可能会问向量数据库的扩展性如何。水平扩展通过增加节点实现,垂直扩展通过提升单机配置实现。Milvus等分布式向量数据库支持水平扩展,可以处理十亿级别的向量数据。
14 多Agent场景下如何实现向量数据库共享
参考答案

多Agent共享向量数据库需要考虑三个问题:

数据权限控制。不同Agent应该有不同的访问权限,有的只能检索,有的可以入库修改。可以通过API层的权限控制或者数据库层面的用户权限来实现。

并发访问处理。多个Agent同时读写可能产生冲突。可以通过加锁、批量处理、或者使用支持高并发的向量数据库来解决。

数据一致性。确保多个Agent对数据库的修改能实时同步,避免出现知识不一致的情况。分布式部署时要关注数据同步延迟。

实现方式:

把向量数据库部署为独立服务,多个Agent通过统一的API访问。或者使用支持多租户的向量数据库,为每个Agent分配独立的命名空间。

延伸追问
可能会问共享数据库会不会有性能瓶颈。可以通过读写分离、缓存热门查询结果、水平扩展集群节点来解决。
15 向量数据库与LLM的联动开发
参考答案

向量数据库和LLM的联动流程:

第一步,Agent接收用户query后,先用LLM进行意图解析,理解用户真正想要什么。

第二步,把解析后的query转成向量,调用向量数据库检索相关知识。

第三步,把检索到的知识片段和用户问题一起拼成Prompt,传给LLM生成最终回答。

开发要点:

Prompt设计要明确告诉模型基于提供的上下文回答,不能编造。

检索结果要做长度控制,避免超出模型上下文限制。

可以要求模型给出引用来源,增强答案可信度。

延伸追问
可能会问检索不到相关内容时怎么处理。可以设置阈值,如果最高相似度低于某个值,直接告诉用户没有找到相关信息,而不是强行让模型回答。
16 向量数据库的多模态支持
参考答案

向量数据库可以存储和检索多种类型的数据:

文本向量最常见,用BERT、BGE等文本Embedding模型生成。

图像向量用CLIP、ResNet等视觉模型生成,可以实现以图搜图或者图文互搜。

语音向量先把语音转成文本,再用文本Embedding模型,或者用专门的语音Embedding模型。

统一存储的关键:

使用支持多模态的Embedding模型(如CLIP可以把文本和图像映射到同一向量空间),或者确保不同类型数据的向量维度一致。

检索时可以通过元数据标记数据类型,按类型筛选后再做相似度匹配。

延伸追问
可能会问多模态检索的实现复杂度。主要是Embedding模型的选择和统一,向量数据库本身对数据类型没有限制,存的都是数值向量。
17 向量数据库检索结果不相关怎么排查
参考答案

检索结果不相关通常有这几个原因:

Embedding模型不匹配。检查用的模型是否适合当前数据类型,比如用文本模型处理专业领域内容效果可能不好。解决方法是换用领域适配的模型或者在领域数据上微调。

向量索引配置不合理。查看索引类型是否适配数据量,索引参数是否合理。比如HNSW的efSearch值过低会导致精度下降。解决方法是调整索引参数或者重建索引。

相似度阈值设置不当。阈值过低会引入大量低相关结果,阈值过高可能漏掉相关内容。需要通过测试找到平衡点。

知识库质量问题。检查知识库预处理是否到位,是否存在大量无关、冗余的知识片段。解决方法是重新清洗数据,删除无关内容。

排查方法:

先用几个标准测试用例验证,看是普遍问题还是特定query的问题。然后逐一检查模型、索引、阈值、数据质量这几个环节。

延伸追问
可能会问怎么快速定位问题环节。可以用同样的query在不同的配置下测试,比如换不同的模型、调整阈值,看哪个环节对结果影响最大。
18 向量数据库的性能优化手段
参考答案

性能优化可以从索引、查询、架构三个层面入手:

索引优化:

选择合适的索引类型,HNSW适合查询多,IVF适合更新多。

调整索引参数,比如HNSW的efConstruction和efSearch要在精度和速度之间找平衡。

考虑向量量化压缩,用PQ等方法减少存储和传输开销。

查询优化:

缓存热门查询结果。

先用元数据过滤缩小检索范围,再做向量搜索。

批量检索,减少API调用次数。

架构优化:

读写分离,查询走从节点,写入走主节点。

水平扩展,增加节点分担查询压力。

就近部署,把向量数据库部署在离应用最近的位置,减少网络延迟。

延伸追问
可能会问向量量化压缩会不会影响精度。会有一定影响,但通常控制在可接受范围内。可以在压缩前后做对比测试,评估精度损失是否在业务可接受范围内。

以上就是万字详解面试题库向量数据库篇的全部内容,共18道核心面试题,涵盖向量数据库的基础概念、选型对比、索引原理、检索优化、实战开发等核心知识点。建议结合自己的项目经验,针对每道题准备具体的案例和数据支撑,在面试中展现出对技术的深入理解和实际应用能力。