早些时候我们在社区微信群发出了一份关于 Milvus 自动问答机器人的调研问卷。
调研受到了社区同学的积极响应,很快我们就收到了很多热心用户的回复。
基于这些回复,我们整理出了 Milvus Chatbot 的形态:
经过数月的努力,我们完成了原型验证,对接测试和集成部署,Ask AI 也在今天正式和大家见面,接下来本文将带你深入了解它的使用方式以及其背后的构建流程~
02.如何使用?
官方文档
Ask AI的入口在官方文档站右下角,点开后有Ask AI和Search两种模式。
Search 模式可以跨多信息源(如官方文档、Github、Discord 等)搜索最相关的文档,主要基于 Milvus 的向量检索能力:
Chatbot 模式提供对话聊天框,基于 Milvus 构建 RAG,利用 LLM 模型能力支持各种语言的交互和回答生成:
Chatbot 提供必要的反馈功能,以帮助我们收集反馈,持续提升 Chatbot 的回答准确度:
此外,我们在 Milvus Discord 频道上也添加了 Ask AI 功能。
有了 Ask AI 的帮助,Milvus 的用户可以更快检索到想要查询的内容,获得实时响应的技术支持与帮助,同时通过调用 LLMs 扩展了更多语言的支持。
03.怎样构建?
Ask AI 是由 Milvus 团队与 Inkeep 联合搭建的智能文档搜索机器人,基于 Milvus 开源文档和相关技术讨论内容构建的企业级 RAG 服务,文档被切分、处理、向量化后存储在 Milvus 的云端服务器 Zilliz Cloud 中,整个 RAG 的构建流程主要包括:Ingestion -> Indexing -> Retrieval -> Generation。
Ask AI 的架构图如下图所示:
Knowledge Base 来源:
在 Knowledge Base 的处理过程中,文档被切分,并以向量的方式存储在 Zilliz Cloud 上,同时通过 metadata 的组织在 highlevel 形成一个更结构化的体系结构(例如 Hierarchy 和 Graph)。一如机器学习中的数据决定论 Garbage in garbage out,文档的质量也决定着检索召回 context 的质量,进而成为了影响问答效果的关键因素。为了得到更好的回答质量,自 Milvus 2.4 起,文档质量建设的工作一直在进行,包括内容的更新、校准和优化,文档结构的梳理与重新组织等。
索引和检索管道主要基于 Milvus 构建,可以快速精准地提供检索服务。一个典型文本段的存储在 Milvus 中表示为:
存储在 Milvus 中的重要元数据字段包括记录 ID、记录类型、源类型等。这些 metadata 对检索非常重要,因为根据用户的问题,某些类型的文档可能比其他类型的文档更重要。例如,文档页面可能比博客文章更重要,官方指南可能比 discord 里的评论更重要。在检索过程中,会对 Milvus 进行多种不同组合的向量检索,并且通过不同的 limits 和 filters 条件获取到最有用的结果。
一个典型的 Retrieval 处理步骤包括:
在以上步骤完成后,就是通过调用 LLMs 来生成回答结果,LLMs 需要根据预期效果(质量和延迟等)和成本预算进行综合评估,目前我们选择采用的模型是 gpt-4o。
性能
特性
在考虑了这些性能和特性指标后,Ask AI 就完成了基本搭建流程,这里欢迎大家的试用与反馈!
04.未来展望
此次探索既是 Milvus 团队对 RAG 场景的进一步尝试,也是对 Zilliz Cloud 的实战练兵,代表了 AI 时代下我们拥抱变化的决心。在提升用户体验、提升文档质量的同时,Ask AI 项目在未来将持续投入,并探索一些新的内容:
在与业内专家和分析师的交流中我们得出共识,随着大模型在知识库检索场景的广泛落地,问答机器人等应用会越发普及,RAG 应用(如知识库问答、网页客服、售后技术支持等)将在近两年全面开花结果,未来产品的介绍、客服、助手都会结合 RAG 的能力,提升用户使用体验。Milvus 团队凭借其多年在非结构化数据检索领域积累的经验,将赋能更多 RAG 解决方案提供商以提供成本低廉且优质高效的 RAG Infra 服务。