2026/5/18 20:18:38
网站建设
项目流程
网站用什么系统好用,wordpress英文企业网站模板,爱站网权重查询,什么样的网站好优化业务团队可能说他们想要个负重一吨#xff0c;时速两百公里的马车……
现如今#xff0c;借助向量检索能力#xff0c;实现基于语义相似度的智能搜索#xff0c;已经是所有电商、推荐、社区平台技术架构的重要一环。
作为拥有约 1.08 亿日活、 11 亿月活用户的兴趣内容社…业务团队可能说他们想要个负重一吨时速两百公里的马车……现如今借助向量检索能力实现基于语义相似度的智能搜索已经是所有电商、推荐、社区平台技术架构的重要一环。作为拥有约 1.08 亿日活、 11 亿月活用户的兴趣内容社区平台 Reddit自然也不例外。自2024 年起Reddit 各个团队就已经开始用不少方案来做近似最近邻ANN向量搜索。这个过程中有用过谷歌的 Vertex AI 向量搜索 也试过用Apache Solr 的 ANN 向量搜索处理一些大数据集还有在垂直扩展的边缘节点里部署 Facebook 的 FAISS 库专门应对小数据集。但是随着越来越多团队和业务对向量检索的需求持续增加建立统一的向量数据库infra底座就随之被提上了日程。整体来说 Reddit的整个向量数据库选型分四步走收集团队需求背景、定性评估候选方案、定量测试头部选手、敲定最终答案。这里面每一环都有不同的坑以下复盘可以供所有人参考。当然文章不是要评判哪款向量数据库天下第一测试也不会符合所有场景的需求。以下仅代表 Reddit的业务选型逻辑以及优先级排序。01收集团队需求最一开始 Reddit对想用ANN 向量搜索的团队收集了三方面关键信息功能需求比如能不能同时做向量和关键词搜索支持标签检索吗能不能按非向量属性过滤非功能需求比如能不能存 10 亿级向量P99 延迟能不能控制在 100 毫秒以内团队已经在用或者感兴趣的向量数据库跟团队聊清楚需求其实不简单。很多团队会照着自己现在的解决办法说需求然后成功把所有人带偏。举个例子有个团队本来在用 FAISS 做 ANN 向量搜索基于这个背景他们说新方案必须每次搜索能高效返回 1 万条结果。一万条用户难道要没日没夜24小时都住在 Reddit看帖子吗进一步追问才知道之所以要 1 万条是因为 FAISS 不支持语义检索的同时做过滤然后他们只能先拿大量语义召回结果做事后筛选来保证召回率。所以团队的真实需求根本不是一万条数据而是高效过滤方案。而且要是能先过滤再做语义检索其实也能节省下大量的语义检索成本。梳理清楚需求之后接下来盘点大家都在用什么产品也很重要一般有一个团队觉得某款方案好用那这款就有可能在全公司推广如果大家都吐槽某款那直接 pass 就行。02定性评估候选方案以团队关注的方案为基础我们按这三步定性评估找出最贴合需求的研究每个方案对照需求的权重打分看方案能满足多少需求按定性标准和讨论结果删掉一些不合适的方案选出前几名进入定量测试阶段我们一开始的候选清单有这些纯向量检索产品Milvus、Qdrant、Weaviate、OpenSearch、Vespa、Pinecone带有向量检索能力的其他数据库Pgvector本来就用 PostgreSQL 当关系型数据库、Redis本来就用它做键值存储和缓存Cassandra已用于非 ANN 搜索Solr本来用它做词法搜索之前试过用它做向量搜索、Vertex AI已经在用来做 ANN 向量搜索接下来我们把所有团队提的功能、非功能需求再加上一些符合我们工程价值观和目标的约束条件都列成表格行给每项需求定个权重1-3 分。然后给每个候选方案打分按 0-3 分评它满足每项需求的程度如下表。打分虽然有点主观但我们选了一个基准方案给出打分例子和理由让评估的人都照着参考。以下是打分规则0 分不支持也没证据表明能支持1 分勉强支持或者支持得不够好2 分支持得还不错能满足基本需求3 分支持得特别好比同类方案都强不过要注意有些能力的选项权重的重要性可能已经超过了0-3分的范畴而是一个选型的硬约束。比如对Reddit来说这个硬约束就是是否开源。因为向量数据库是一个还相对比较新的事物需要项目方和客户一同打磨一同进步开源让客户自身也能深度参与、贡献代码的方案这样一旦遇到问题也自主快速修复。也是因为这个原因Vertex AI、Pinecone这两个选项在一开始被Reddit排除在外。综合以上条件以下是具体打分结果最后每个方案的总分会用方案在某项需求的得分乘以这项需求的权重再加起来比如 Qdrant 在 “重排序 / 分数合并” 这一项得 3 分权重是 2那这项就是 6 分所有项都这么算再求和。注意这个总分是用来为下一步筛选提供候选集的不是最终决策的唯一依据。为什么说这个得分不能作为最终选型依据一个很重要的点是在于有些功能大家看起来都有但怎么实现的实际体验如何可能天差地别有时候一些所谓的3分选手可能在体验上并不见得比1分选手做的更好。因此对于一些最重要的指标团队必须要做实际的定量测试之后才知道合不合适。定量测试则围绕以下几个点重点展开扩展性和可靠性得有其他公司用这款方案支撑 1 亿级甚至 10 亿级向量的案例社区生态方案得有活跃的社区在这个快速发展的领域里有足够的势头元数据类型丰富、过滤功能强能支持日期、布尔值等多种过滤方式适配更多使用场景支持多种索引类型不只是 HNSW 或 DiskANN能根据Reddit不同的使用场景优化性能考虑到上面的初步评测结果Qdrant和Milvus评分接近且大幅领先其他产品而定量测试又要花费大量的时间、预算、精力因此我们定量测试阶段就重点选了这两家产品。正好Qdrant 和 Milvus 的架构差异也很有意思可以对比Qdrant同构节点架构一个节点就承担 ANN 向量数据库的所有操作Milvus异构节点架构查询、索引、数据写入、代理这些功能都由不同的节点来做03定量测试头部选手我们想通过定量测试搞清楚哪种方案部署起来简单看文档好不好用哪种方案运行起来省心看弹性和成熟度哪种方案在我们关注的场景和规模下性能更好于是我们做了这些收集了三个不同使用场景的文档和查询向量数据集在 Kubernetes 里给每个方案分配了差不多的资源把文档数据导入每个方案用 Grafana 的 K6 工具发相同的查询负载先让系统预热再升到目标吞吐量比如 100 QPS测试重点看这些吞吐量找到每个方案的性能临界点吞吐量和延迟的关系负载期间节点挂了之后的表现错误率、延迟变化等过滤功能对延迟的影响另外我们还做了些简单的 “能用 / 不能用” 测试验证文档里说的功能是不是真的能用比如更新插入、删除、按 ID 查询、用户管理这些同时感受一下这些 API 好不好用。这次测试用的是 Milvus v2.4 和 Qdrant v1.12。因为时间有限我们没把所有索引配置都调一遍只给两个方案设了差不多的配置优先保证高 ANN 召回率重点测 HNSW 索引的性能。CPU 和内存资源也给得差不多。测试下来我们发现两款方案有不少有意思的差异。下面这些实验用的都是约 3.4 亿条 Reddit 帖子向量每条 384 维HNSW 索引的参数是 M16、efConstruction100。第一个实验同样的查询吞吐量100QPS不做写入操作。可以看到加了过滤条件之后Milvus 的延迟比 Qdrant 受影响更大。图表标题带过滤条件的帖子查询延迟 注延迟越低越好第二个实验吞吐量不变的情况下写入期间 100QPS的帖子查询延迟。可以看到Qdrant 的写入操作对查询负载的影响比 Milvus 大得多如下图。这应该是架构的问题Milvus 的写入操作有专门的节点负责和处理查询的节点是分开的而 Qdrant 是同一个节点又要处理写入又要处理查询。图表标题写入期间 100 QPS 的帖子查询延迟 注延迟越低越好第三个实验测试按属性控制结果多样性比如每个子版块的结果不超过 N 条。可以看到同样 100 QPS 的吞吐量Milvus 的延迟比 Qdrant 高。图表标题带结果多样性的帖子查询延迟 注延迟越低越好此外我们还测试了增加数据副本数复制因子 RF 从 1 升到 2之后的扩展效果。一开始测 RF1 的时候在延迟达标的前提下Qdrant 能支撑的吞吐量比 Milvus 高更高的 QPS 没显示因为测试时出现错误没跑完。图表标题Qdrant 帖子查询 RF1 不同吞吐量下的延迟图表标题Milvus 帖子查询 RF1 不同吞吐量下的延迟 但把复制因子升到 2 之后Qdrant 的 P99 延迟虽然有改善可 Milvus 能在延迟达标的情况下支撑更高的吞吐量Qdrant 的 400 QPS 没显示因为延迟太高还出了错测试没跑完。图表标题Milvus 帖子查询 RF2 不同吞吐量下的延迟图表标题Qdrant 帖子查询 RF2 不同吞吐量下的延迟 注没法稳定超过 300 QPS因为时间不够我们没在自己的数据集上对比两款方案的 ANN 召回率但参考了ann-benchmarks.com网站上公开数据集的测试结果。04敲定最终方案性能方面没怎么调优、只使用 HNSW 索引的情况下Qdrant 的延迟表现看起来的确比 Milvus 好。但 Milvus 增加副本数之后扩展性更优而且因为是多节点架构写入和查询的相互影响更小。运维方面虽然 Milvus 的架构更复杂毕竟是为海量数据打造的产品用了多节点类型还得依赖 Kafka 这种外部预写日志和 etcd 这种元数据存储但要是两款方案都出了问题我们调试、修复 Milvus 反而更顺手。另外Milvus 增加数据集的复制因子时能自动做负载均衡而开源版的 Qdrant 得手动创建或删除分片才能提升复制因子 —— 要么我们自己开发这个功能要么就得用非开源版。整体来说Milvus 比 Qdrant 更适配 Reddit 的技术体系也和Reddit 的技术栈更像。Milvus 是用 Golang 写的这是Reddit 首选的后端编程语言所以给它贡献代码比给 Rust 写的 Qdrant 容易。而且 Milvus 开源版本的迭代速度比 Qdrant 快满足的核心需求也更多。最后两款方案其实都满足了我们大部分需求但考虑到Reddit 是一个依然在高速增长的平台且未来的数据体量与运维难度还将节节攀升选择Milvus 的更强扩展性能让整体运行更放心也更适配Reddit 公司的情况。虽然没来得及测 Vespa 和 Weaviate 有点可惜但就算测了估计也不会选 ——Vespa 是用 Java 写的和Reddit 的技术栈不太搭Weaviate 和 Qdrant 一样是单节点架构Qdrant都做不到的事情Weaviate 自然也不符合我们的需求。05尾声最后想多念叨两句实操里的小提醒算不上标准答案更像是踩过坑后的真心建议面对需求别着急 照单全收多刨根问底两句别被已有的解决方案框住思路避免带着偏见做判断给候选方案打分没问题但分数只是帮你理清核心需求的参考可别当成唯一的 决策依据可能会被厂商天花乱坠的文档给骗了定量测试性能的时候也别忘了多留心这个方案好不好部署、调试起来顺不顺手、后续维护会不会费劲这影响所有人的实际使用体验。选型终究是门 平衡术维护成本、使用便捷性和性能都得放进考量里没必要死磕 某一个特殊环境下的所谓性能最优这一个指标。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】