正文
特点:基于向量的全托管搜索服务,专注于语义搜索和相关性。
上述所提到的目前主流的向量数据库方案,在向量数据的存储成本、召回率等方面都面临较大的挑战。随着非结构化数据的进一步增长,成本和召回率的挑战会变得越来越棘手。在向量数据库的演讲方向上目前有以下发展趋势
1. 存储和索引优化
-
量化技术:使用向量量化(Vector Quantization, VQ)技术,例如产品量化(Product Quantization, PQ)或乘积量化(Additive Quantization, AQ),可以在保证精度的同时大幅度减少存储和计算资源。
-
压缩向量:采用哈希方法如局部敏感哈希(Locality-Sensitive Hashing, LSH)来减少存储消耗,并加速相似性搜索。
-
分布式存储:使用分布式文件系统和数据库(如Apache Hadoop、Cassandra)可以优化存储和查询的大规模向量数据。
-
存储器级别调整:利用固态硬盘(SSD)甚至是新兴的持久化内存(Persistent Memory, PMEM)来在内存和磁盘之间找到平衡,优化存储成本。
2. 召回率优化
-
混合搜索技术:结合粗粒度和细粒度的索引,例如先使用粗滤技术快速缩小搜索范围,然后进行精确查找。
-
近似最近邻查找(ANN)算法:如HNSW(Hierarchical Navigable Small World)图、FAISS中使用的ANN算法可以在保证高召回率的基础上优化搜索速度。
-
多层次检索:分层结构的检索方法,从粗到细进行,逐步提高召回率和精度。
3. 系统架构和基础设施
4. 专用硬件加速
5. 持续优化和更新模型
6. 先进的嵌入技术
▐ Multi-Agent
在软件领域,“分而治之”是一种常用的设计和开发理念,而在大模型场景中也同样适用。面向复杂任务场景,多Agent方法会将复杂任务分解为子任务,让不同的智能体完成不同的子任务,即专业“人”做专业“事”。因为,拆解任务有助于降低单个大模型的输入复杂度以及理解难度,从而有利于大模型专注于“做”一件事情,其性能可能会更好。
-
controller更新当前环境的状态,选择下一时刻行动的agent X
-
agent X 与环境交互,更新自身memory信息
-
agent X 调用LLM,基于指令执行动作,获取输出message
-
目前在多Agent协作方面,目前比较有名的是AutoGen框架和MetaGPT框架。
AutoGen是一个能让多个Agent进行沟通协作的Python开源框架。核心解决两个问题:
第一个问题:如何设计用户可定制、可重用的、能够互相协作的 Agent。AutoGen 是要设计为一个通用的能够适用多种场景的框架,在AutoGen的官网 Examples中给出了在多种场景下能够解决问题的例子,此外在git 仓库中的 notbook 目录中有50+例子。有解决数学问题场景、有通过开发代码进行分析的场景(比如上一章节的列子)、还有通过五六个 Agent 讨论分析开放问题的场景。所以 Agent 的扩展能力是需要重要考虑问题,AutoGen中通过支持多种外部工具、不同LLM、支持 human in the loop 的方式,Agent 之间能够通信的方式来解决扩展问题。
第二个问题:如何让 Agent 能灵活支持不同模式的会话方式。不同的场景,根据复杂度、问题的类型需要不同的 Agent 会话模式。这里的“模式”包括了单轮对话 or 多轮对话、自动选择每轮的 speaker or 通过规则选择、通过自然语言控制逻辑 or 通过代码控制,此外设计需要考虑多个Agent 之间如何灵活“组网”,比如三人一组,每组一个leader,组内互相通信,leader能够通信的方式。
为了解决这两个问题,AutoGen抽象了一些基础概念。
Conversable Agents
旨在用于在复杂任务中进行多轮交互。这些智能体能够理解和处理用户输入,维护上下文,并生成合适的响应。Conversable Agents通常集成了自然语言处理技术,包括自然语言理解(NLU)和自然语言生成(NLG),以提高对话的流畅性和智能性。
Conversation Programming
旨在通过自然语言与人工智能系统进行交互,来实现编程和任务自动化。这个概念试图简化编程过程,使得用户无需深厚的编程背景也能使用自然语言描述需求,进而生成可执行的代码或自动化脚本。
在 Conversation Programming 中,用户通过与人工智能助手进行对话,将具体任务、算法逻辑或问题描述出来,AI 系统则负责理解这些意图并生成相应的代码。这种方式降低了编程的门槛,同时也加速了从想法到实现的过程。
MetaGPT 是一个基于多智能体的元编程框架,它通过将不同的角色(如产品经理、架构师、项目经理等)分配给不同的大型语言模型(LLM),实现软件开发流程的自动化。这个框架特别适合于复杂的编程任务,能够自动生成用户故事、需求分析、数据结构、API 和文档等输出。MetaGPT 使用标准操作程序(SOPs)来指导智能体的协作,旨在提高代码生成的质量和效率 。
工作流程
MetaGPT的主要工作流程和特点包括: