[图片]https://jdc100.huawei.com/CommunityGatewayService/com.huawei.ipd.sppm.jdcforum:JDCCommunityUserService/CommunityUserService/jdc/api/attachment/downLoadByAid?path=202509/16/2142221b9a5d75-893c-4a08-8866-1339786d0e62.png&aid=1160785&bussinessType=2&tid=1153758[图片]简介 随着人工智能技术的飞速发展,特别是大语⾔模型( LLM)的兴起,我们处理的数据类型正从结构化表格向海量的文本、图像、音频等非结构化数据转变。 如何⾼效地存储、管理和检索这些数据,成为了⼀个核心挑战。向量数据库,作为专为AI时代设计的“新物种”, 正是在这⼀背景下应运而生,成为现代AI应用不可或缺的基础设施。⼀、 理论基础: 向量嵌⼊与向量数据库从数据到向量:AI的“通⽤语⾔” 在计算机的世界里,所有数据最终都需转化为数字。但对于“你好”和“早上好”这类离散的文本,计算机本身无法理解它们在语义上的相近性。为了解决这个问题,我们引入了“向量化”(Embedding)技术。通过深度学习模型(如BERT、阿⾥Qwen等),我们可以将这些复杂的非结构化数据映射到⼀个⾼维度的数学空间中,形成⼀个由浮点数组成的数值向量,例如⼀个768维或⾼达4096维的向量。 这个向量就像是数据在AI世界里的“⾝份证”,它不仅包含了数据本身的信息,更重要的是编码了其语义和上下文。例如,“搜索”、“检索”和“查询”虽然字⾯不同,但它们的向量在空间中的位置会非常接近,因为它们的语义是相似的。这种特性使得机器能够“理解”并比较不同数据之间的相似性。向量数据库 vs. 传统数据库 向量数据库的核⼼任务就是存储和查询这些⾼维向量。 它与我们熟知的MySQL等传统关系 型数据库在数据模型、 查询⽅式和索引机制上有着本质区别: [图片]https://jdc100.huawei.com/CommunityGatewayService/com.huawei.ipd.sppm.jdcforum:JDCCommunityUserService/CommunityUserService/jdc/api/attachment/downLoadByAid?path=202509/16/21514349f3e715-72a4-4e54-9223-88f9e11a14e2.png&aid=1160786&bussinessType=2&tid=1153758[图片] ⼆、 核⼼算法深度剖析:ANN的实现原理 向量数据库的魔⼒在于其⾼效的相似度搜索能⼒ ,这背后依赖于相似度度量和⾼效的ANN 索引算法。 暴⼒搜索 ( Brute-force) 的复杂度为O(N*d) 在百万级向量下已不可⾏ , 因此 ANN算法⾄关重要。相似度度量:定义“距离” 衡量向量“相近”程度的标尺是距离度量函数。选择合适的函数对检索的准确性至关重要。 余弦相似度 (Cosine Similarity): cos(θ) = (A·B) / ( ||A || · ||B ||)。它关注向量的方向而非大小,值越接近1表示方向越⼀致,语义越相似。这是文本相似度计算中最常用的⽅法。 欧氏距离 (Euclidean Distance): d(p,q) = √Σ (pi - qi) ²。它反映了向量在空间中的绝对几何距离,适用于对数值差异敏感的场景,如图像处理。 内积 (Inner Product): A ·B = ΣAi · Bi。在向量归⼀化后,内积等价于余弦相似度。某些模型直接优化内积,可以简化计算。索引算法:⼤海捞针的艺术1. HNSW (分层可导航⼩世界) HNSW (Hierarchical Navigable Small World) 是⼀种基于图结构的算法,它构建了⼀个多层级的导航网络,实现了速度与精度的优异平衡。其灵感来源于跳表(Skip Lists)和可导航小世界( NSW)图。 结构原理: HNSW构建⼀个多层图。顶层图最稀疏,节点间的连接(边)跨度很大,像“⾼速公路”;底层图最密集,连接了所有数据点,像“城市小道”。这种分层结构使得搜索可以从顶层开始,快速“跳跃”到目标区域,然后逐层下降,进行更精细的查找。 搜索过程: 搜索从顶层的入口点开始,在当前层使用贪心算法寻找最接近查询向量的节点。当找到局部最优解后,将该节点作为下⼀层的入口点继续搜索,直到达最底层。这个过程的平均时间复杂度可以达到 O(log N)。 关键参数:M(每个节点的最大连接数)、 efConstruction (构建索引时的邻居候选集大小)和ef(查询时的邻居候选集大小)是影响性能的关键。增加这些值可以提⾼召回率,但会增加索引构建时间和查询延迟。[图片]https://jdc100.huawei.com/CommunityGatewayService/com.huawei.ipd.sppm.jdcforum:JDCCommunityUserService/CommunityUserService/jdc/api/attachment/downLoadByAid?path=202509/16/2202458ba032aa-5e29-472e-808e-14a0363f93ac.png&aid=1160788&bussinessType=2&tid=1153758[图片]2. IVF (倒排⽂件索引) IVF (Inverted File Index) 采用“先聚类 ,再搜索”的策略。它首先通过K-Means等算法将所有向量分成nlist个“簇”(cluster),每个簇有⼀个中心点(centroid)。 结构原理: 索引由两部分组成:所有簇的中⼼点和每个簇内向量的倒排列表。每个向量被分配到离它最近的中心点所在的列表中。 搜索过程: 查询时,首先计算查询向量与所有nlist个中心点的距离,选出最近的nprobe个簇。只在这nprobe个簇对应的倒排列表中进⾏精确搜索,从⽽将搜索范围从N缩小到约N * nprobe / nlist。 IVF-PQ (乘积量化): 为了进⼀步降低内存占用,IVF常与PQ( Product Quantization)结合。PQ将⾼维向量切分为多个低维子向量,并对每个子空间独立进行量化,用⼀个短码(如8位整数)来表示句子向量。这是⼀种有损压缩技术,能将内存占用减少⾼达97%,但会牺牲⼀定的精度。 [图片]https://jdc100.huawei.com/CommunityGatewayService/com.huawei.ipd.sppm.jdcforum:JDCCommunityUserService/CommunityUserService/jdc/api/attachment/downLoadByAid?path=202509/16/2210423b5b20b6-3dae-4dd2-b65d-4de3fdc2731a.png&aid=1160789&bussinessType=2&tid=1153758[图片]3. 混合搜索 (Hybrid Search) 纯粹的向量搜索可能⽆法处理精确匹配或罕见词查询。因此混合搜索应运而生,它结合了基于关键词的稀疏向量检索(如BM25)和基于语义的密集向量检索。 有些向量数据库(如Milvus)已原生支持此功能,通过对两路召回结果进行重排序( Rerank),可以显著提升搜索的召回率和精度。三、 主流产品架构与性能对⽐架构对⽐ Milvus: ⼀款功能强⼤的开源向量数据库,采⽤存算分离的分布式架构。 它由接⼊层、协调服务、⼯作节点和存储层四个独⽴的组件构成,具有⾼可⽤ 、⾼可扩展的特性,专 为⼤规模⽣产环境设计。 Pinecone: ⼀款全托管的Serverless向量数据库。它为⽤户屏蔽了底层复杂的运维工作,通过API提供服务,并能根据负载⾃动扩缩容,适合追求快速上线和低运维成本的团队。 Faiss: 由Facebook AI Research开发,它是⼀个专注于⾼效相似度搜索的底层库,而非⼀个完整的数据库系统。Faiss性能极致,是许多其他向量数据库产品的核⼼引擎 ,但直接使⽤它需要自行处理数据管理、API封装和分布式扩展等问题。 ChromaDB: ⼀款轻量级的开源向量数据库,主打“开发者友好”,非常适合用于快速原型验证和中小型项目。易于部署和使用,是许多开发者入门向量数据库的⾸选⼯具。性能基准(Benchmark) 性能对⽐通常关注QPS(每秒查询数)、延迟和召回率( Recall)三项指标。 根据VectorDBBench等公开基准测试,在不同数据集和硬件配置下,各数据库表现各有千秋: Milvus 在⼤规模数据集(如10亿级别)上展现出强⼤的⽔平扩展能⼒和⾼吞吐量,其性能随集群规模扩⼤近乎线性增⻓。 Pinecone的p2(性能优化)实例在低延迟查询⽅⾯表现出⾊,即使在⾼负载下也能保持毫秒级响应,但其召回率可能略低于精度优化的配置。 Faiss 作为底层库,在单机性能上通常是标杆,尤其是在GPU加速下。但要达到同等的系统级性能,需要⼤量的⼯程优化。四、RAG⾼级优化与⼯程实践 [图片]https://jdc100.huawei.com/CommunityGatewayService/com.huawei.ipd.sppm.jdcforum:JDCCommunityUserService/CommunityUserService/jdc/api/attachment/downLoadByAid?path=202509/16/222305677b123e-2242-4df4-b3f2-4cb12b0c6338.png&aid=1160791&bussinessType=2&tid=1153758[图片] ⼤语⾔模型虽然强⼤,但存在知识截⽌⽇期和模型幻觉两⼤痛点。检索增强⽣成(RAG)通过为LLM外挂⼀个包含实时、专业知识的向量数据库,完美地解决了这些问题。然⽽⼀个基础的RAG流程在⽣产环境中往往效果不佳。为了提升RAG系统的性能,需要采⽤⼀系列⾼级优化技术。1. 检索前优化(Query Rewriting) ⽤户的原始查询可能存在歧义或过于复杂。通过LLM对查询进⾏改写,可以提升检索的精准度。 HyDE (Hypothetical Document Embeddings): 让LLM针对⽤户问题⽣成⼀个“假设性”的答案,然后⽤这个答案的向量去检索,可以缓解查询与⽂档之间的语义鸿沟。 子查询生成: 将⼀个复杂问题(如“对比Milvus和Pinecone在RAG场景下的优缺点”)分解为多个简单的子查询(“Milvus在RAG中的优点是什么?”、“Pinecone在RAG中的优点是什么?), 分别检索后再汇总给LLM。2. 检索中优化(Advanced Retrieval & Reranking) 句子窗⼝检索(SentenceWindowRetrieval):检索时使⽤更⼩的⽂本单元(如单个句子)进⾏相似度匹配,以提⾼精度。在找到最相关的句子后,将该句子所在的更大文本块(如前后三个句子)作为上下文提供给LLM,确保信息的完整性。 层次化索引:对文档建立两级或者索引:⼀个是对文档摘要的索引,另⼀个是文档内部块的索引。先通过摘要索引筛选出相关文档,再在这些文档内部进行精细检索。 重排序(Reranking):初步检索(如混合搜索)召回Top-K个候选文档后,使⽤更强大的重排序(reranker)模型(如Cross-Encoder)对这K个文档与查询的相关性进行精确打分,选出最终的Top-N个文档。3. 检索后优化(Prompt Compression) 检索到的上下文可能包含噪声或冗余信息,且LLM的上下文窗⼝有限。通过LLM对检索到的内容进行压缩和总结,提取核心信息,可以构建更⾼效、更精炼的prompt,让LLM回答更加贴合场景。4. RAG框架新进展 学术界和⼯业界也在探索更先进的RAG框架,如SELF-RAG(通过⾃我反思判断是否需要检索以及评估检索内容质量)、CRAG(对检索结果进⾏评估,若不佳则触发纠正性检索)、GraphRAG(一种融合知识图谱技术与检索增强生成(RAG)的方案),这些框架赋予了RAG系统更强的⾃主决策和纠错能力。总结 向量数据库不仅是⼀种新型数据库技术,更是连接非结构化数据与AI模型的关键桥梁。从底层的ANN算法原理,到上层的分布式架构设计,再到与RAG结合的复杂工程实践,向量数据库正在构建⼀个全新的、面向AI的数据基础设施生态。在数据驱动的未来,深刻理解并掌握向量数据库的核心技术,将是每⼀位AI⼯程师和架构师的必备技能,也是推动更多颠覆性创新应用诞生的基石。