收藏!程序员小白轻松入门大模型:从零开始掌握向量数据库与搜索核心技术
以下是我学到的部分经验以及常见的理解误区BM25 是搜索的强基准线。哈你以为我会先讲向量搜索结果我在谈关键词检索。这正是第一课在接触向量搜索等复杂技术前应先从 BM25 这类简单方法入手。向量数据库中的向量搜索是近似而非精确的。理论上可以用暴力搜索计算查询向量与库中每个向量的距离精确 KNN 算法但这种方式扩展性差。因此向量数据库采用 HNSW、IVF 或 ScaNN 等近似最近邻(ANN)算法在牺牲微量准确性的前提下加速搜索。正是向量索引技术让向量数据库具备大规模高速检索能力。向量数据库不仅存储嵌入向量。它们还存储原始对象例如生成向量嵌入的文本和元数据。这使得它们能够支持除向量搜索之外的其他功能如元数据过滤、关键词搜索和混合搜索。向量数据库的主要应用场景并非生成式 AI而是搜索。但为 LLMs 寻找相关上下文本质上就是搜索。这就是为什么向量数据库和 LLMs 像饼干配奶油般相得益彰。你必须指定想要检索的结果数量。回想起来当我意识到需要定义想要检索的最大结果数时这真是个醍醐灌顶的时刻——虽然有点过于简化但如果没有limit或top_k参数向量搜索会返回数据库中所有按与查询向量距离排序的对象。嵌入类型多种多样。当你想到向量嵌入时脑海中浮现的可能是类似[-0.9837, 0.1044, 0.0090, …, -0.2049]这样的数值。这被称为稠密向量是最常用的向量嵌入类型。但除此之外还存在稀疏向量([0, 2, 0, …, 1])、二进制向量([0, 1, 1, …, 0])以及多向量嵌入([[-0.9837, …, -0.2049], [ 0.1044, …, 0.0090], …, [-0.0937, …, 0.5044]])等多种形式它们各自适用于不同场景。优质嵌入模型何处寻首推大规模文本嵌入基准测试(MTEB)它涵盖了分类、聚类和检索等各类嵌入模型任务。若专注信息检索领域建议关注 BEIR 基准一个用于信息检索模型零样本评估的异构基准测试。MTEB 上大多数嵌入模型仅支持英语。如需处理多语言或非英语场景值得关注多语言大规模文本嵌入基准测试(MMTEB)。关于向量嵌入的一点历史在当今的上下文嵌入如 BERT出现之前存在静态嵌入如 Word2Vec、GloVe。它们之所以被称为静态是因为每个单词都有固定的表示形式而上下文嵌入会根据周围语境为同一单词生成不同的表示。尽管现今的上下文嵌入表达能力更强但在计算资源受限的环境中静态嵌入仍具价值因为它们可以从预先计算的表格中直接查询。不要混淆稀疏向量和稀疏嵌入。我花了些时间才明白稀疏向量可以通过不同方式生成要么通过对词频通常通过倒排索引获取应用统计评分函数如 TF-IDF 或 BM25要么使用神经稀疏嵌入模型如 SPLADE。这意味着稀疏嵌入属于稀疏向量但并非所有稀疏向量都必然是稀疏嵌入。万物皆可嵌入。嵌入不仅适用于文本你还可以嵌入图像、PDF视为图像参见 ColPali、图结构数据等。这意味着你能对多模态数据进行向量搜索这相当不可思议。有机会你应该试试。向量嵌入的经济学。这一点不足为奇但向量维度会影响所需的存储成本。因此在选择 1536 维的嵌入模型而非 768 维模型时请先权衡是否值得承担存储需求翻倍的风险。确实更高维度能捕捉更多语义细节。但实现与文档对话功能很可能不需要 1536 维。部分模型实际采用套娃表示学习技术允许在计算资源有限的环境中使用缩短后的向量嵌入同时保持极小的性能损失。说到这个与文档对话教程堪称生成式 AI 领域的Hello world程序。EOS你需要频繁调用嵌入模型。即便在数据摄入阶段已完成文档嵌入也不意味着可以停止调用嵌入模型。每次执行搜索查询时若未使用缓存查询语句同样需要被嵌入。后续新增对象时这些对象同样需要嵌入并建立索引。如果更换嵌入模型则必须重新嵌入并重建索引所有内容。相似并不一定意味着相关。向量搜索通过对象与查询向量的相似度返回结果这种相似度由它们在向量空间中的接近程度来衡量。即使两个句子在向量空间中相似例如如何修理水龙头和哪里可以买到厨房水龙头也不意味着它们彼此相关。余弦相似度和余弦距离不是同一概念但二者相互关联 cosine distance1−cosine similarity 。可以说距离和相似度是反比关系如果两个向量完全相同相似度为 1它们之间的距离则为 0。当处理归一化向量时使用余弦相似度还是点积作为相似度度量并不重要因为从数学角度看它们是等价的。但从计算效率考虑点积更为高效。常见误解RAG 中的 R 代表向量搜索。实际上并非如此R 代表检索(retrieval)。检索可以通过多种不同方式实现参见后续要点。向量搜索只是检索工具箱中的一种工具。还有基于关键词的搜索、过滤和重排序。它们并非非此即彼的关系。要构建出色的系统你需要结合使用不同的工具。何时使用基于关键词的搜索 vs. 基于向量的搜索你的用例主要需要匹配语义和同义词例如pastel colors与light pink还是精确关键词例如A 字裙、“荷叶边连衣裙”如果两者都需要例如浅色 A 字裙结合两者使用混合搜索可能会带来好处。在某些实现中例如 Weaviate你可以直接使用混合搜索功能然后通过alpha参数调整权重——从纯关键词搜索、两者混合到纯向量搜索。混合搜索可以是不同搜索技术的混合体。最常见的情况是当人们谈论混合搜索时他们指的是基于关键字的搜索和基于向量的搜索的结合。但“混合”一词并未具体说明要结合哪些技术。因此有时你可能会听到人们谈论混合搜索指的是基于向量的搜索与结构化数据搜索通常称为元数据过滤的结合。误解过滤会使向量搜索更快。直觉上你会认为使用过滤器应该能降低搜索延迟因为你减少了需要搜索的候选数量。但实际上预过滤候选可能会破坏 HNSW 中的图连接性而后过滤则可能导致完全没有结果。向量数据库采用了各种复杂的技术来应对这一挑战。两阶段检索流程不仅适用于推荐系统。推荐系统通常采用第一阶段的简单检索如向量搜索来缩减候选范围随后在第二阶段通过计算密集但更精确的重排序进行二次筛选。这一方法同样可应用于 RAG 流程。向量搜索与重排序的区别。向量搜索从整个数据库中返回少量结果而重排序则对输入列表进行重新排序后输出。确定合适的文本块嵌入尺寸并非易事。尺寸过小会丢失关键上下文过大则损害语义表达。多数嵌入模型采用均值池化技术将各词元嵌入平均为单个向量表示。因此若嵌入模型具备大上下文窗口理论上可嵌入整篇文档。虽忘记出处但有个精妙类比这就像用电影所有帧叠加制作海报——信息俱全却难辨剧情。向量索引库与向量数据库是两种不同的技术。两者都能实现极速的向量搜索在与文档对话风格的 RAG 教程中都能完美展示向量搜索功能。但只有后者具备数据管理特性例如内置持久化、CRUD 支持、元数据过滤和混合搜索能力。自首个长上下文 LLM 问世以来RAG 技术就被不断宣告死亡。每当出现上下文窗口更长的 LLM 时总有人声称 RAG 将退出历史舞台。但这种情况从未发生…即使丢弃 97%的信息仍能基本准确地完成检索——这就是向量量化的魔力。以二值量化为例你可以将类似[-0.9837, 0.1044, 0.0090, …, -0.2049]的向量转换为[0, 1, 1, …, 0]存储空间从 32 位浮点数缩减至 1 位降低 32 倍而检索效果在某些应用场景中仍能保持惊人的准确度。向量搜索对拼写错误并不鲁棒。有段时间我以为向量搜索能处理拼写错误因为大量文本语料中必然包含许多拼写错误嵌入模型应该能学会这些错误。但仔细想想训练数据中不可能包含足够数量的所有可能的单词拼写错误变体。因此虽然向量搜索能处理部分拼写错误但并不能说它具有拼写错误鲁棒性。了解何时使用哪种指标评估搜索结果。评估搜索结果的指标有很多种。观察学术基准测试如 BEIR时你会发现 NDCGk 指标很突出。但对于许多实际用例而言精确率和召回率这类简单指标反而更合适。精确率与召回率的权衡常被比作渔夫撒网的类比但这个电商例子让我茅塞顿开假设你有个网店有 100 本书其中 10 本是机器学习相关的。现在如果用户搜索机器学习相关的书籍你完全可以只返回一本 ML 书籍。太棒了你获得了完美的精确率在返回的 k1 个结果中有多少是相关的。但召回率却很差在所有存在的相关结果中你返回了多少这里只返回了 10 本相关书籍中的 1 本。而且这对你的业务也不利。也许用户并不喜欢你返回的那本 ML 书籍。另一个极端情况是返回全部书籍——整整 100 本且未经排序…这样召回率是完美的因为你返回了所有相关结果。问题在于同时也返回了大量无关结果这可以通过极低的精确率来衡量。有些指标会考虑排序因素。当我想到搜索结果时脑海中浮现的是类似谷歌搜索的界面。因此很自然地认为搜索结果的排序很重要。但像精确率和召回率这类指标并不考虑结果顺序。如果你的应用场景中排序很关键就需要选择考虑排序的指标如 MRRk、MAPk 或 NDCGk。分词器至关重要。如果你长期沉浸在 Transformer 的世界里可能已经忘记了除字节对编码(BPE)外还存在其他分词器。分词器对关键词搜索及其性能同样重要。既然分词器会影响基于关键词的搜索性能那么它必然也会影响混合搜索的表现。领域外与词汇表外不是同一概念。早期的嵌入模型常因遇到词汇表外术语而失效。如果嵌入模型从未接触过Labubu这个词系统就会直接报错。通过智能分词技术可以优雅处理未见过的词汇表外术语但问题在于这些术语仍属于领域外词汇——它们的向量嵌入看似规范实则毫无意义。查询优化就像你学会了在谷歌搜索栏输入非洲最长河流而不是非洲最长的河流叫什么名字一样。你已经学会了为关键词搜索优化查询是的我们知道谷歌搜索算法更复杂。能先这么理解一下吗。同样地我们现在需要学习如何为向量搜索优化查询。向量搜索之后是什么最初是基于关键词的搜索。后来机器学习模型实现了向量搜索。现在具备推理能力的 LLMs 实现了基于推理的检索。信息检索现在正炙手可热。能在这个激动人心的领域工作我感到非常幸运。虽然研究和应用 LLMs 看起来很酷但弄清楚如何为它们提供最佳信息同样令人兴奋——这就是检索领域的魅力所在。我要重申最后一点但回顾过去的两年我深感庆幸能在这个领域工作。目前我所掌握的只是皮毛仍有太多知识需要学习。当初加入 Weaviate 时向量数据库还是新兴热门技术。随后 RAG 技术兴起。如今我们又在讨论上下文工程。但始终不变的核心是为 LLM 寻找最佳信息输入才能获得最优答案。普通人如何抓住AI大模型的风口领取方式在文末为什么要学习大模型目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 大模型作为其中的重要组成部分 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 为各行各业带来了革命性的改变和机遇 。目前开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景其中应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。随着AI大模型技术的迅速发展相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业人工智能大潮已来不加入就可能被淘汰。如果你是技术人尤其是互联网从业者现在就开始学习AI大模型技术真的是给你的人生一个重要建议最后只要你真心想学习AI大模型技术这份精心整理的学习资料我愿意无偿分享给你但是想学技术去乱搞的人别来找我在当前这个人工智能高速发展的时代AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料能够帮助更多有志于AI领域的朋友入门并深入学习。真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】大模型全套学习资料展示自我们与MoPaaS魔泊云合作以来我们不断打磨课程体系与技术内容在细节上精益求精同时在技术层面也新增了许多前沿且实用的内容力求为大家带来更系统、更实战、更落地的大模型学习体验。希望这份系统、实用的大模型学习路径能够帮助你从零入门进阶到实战真正掌握AI时代的核心技能01教学内容从零到精通完整闭环【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块内容比传统教材更贴近企业实战大量真实项目案例带你亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事02适学人群应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。vx扫描下方二维码即可【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】本教程比较珍贵仅限大家自行学习不要传播更严禁商用03入门到进阶学习路线图大模型学习路线图整体分为5个大的阶段04视频和书籍PDF合集从0到掌握主流大模型技术视频教程涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向新手必备的大模型学习PDF书单来了全是硬核知识帮你少走弯路不吹牛真有用05行业报告白皮书合集收集70报告与白皮书了解行业最新动态0690份面试题/经验AI大模型岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要07 deepseek部署包技巧大全由于篇幅有限只展示部分资料并且还在持续更新中…真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】