停止大模型幻觉:Milvus,AI Native时代的数据库 -- 知识铺
Milvus:AI Native时代的数据库
随着人工智能技术的飞速发展,向量数据库在大模型应用中扮演着越来越重要的角色。本文将围绕Milvus这一高性能向量数据库,探讨其在AI时代的应用和未来展望。
一、Milvus与AI时代的CVP Stack
1. Zilliz的开源+云解决方案Milvus是由Zilliz公司开发的向量数据库,现已成为Linux基金会的一部分。它旨在为大模型提供推理加速和成本节省的解决方案。
2. 项目TowheeTowhee项目专注于解决embedding操作中的复杂问题,包括模型选择、部署、运维和分布式计算等。
3. GPTCache项目GPTCache项目通过将用户问题和答案进行embedding并存储,提高大模型的推理速度,并帮助用户降低成本。
二、为AI而生的向量数据库
向量数据库是AI时代的关键技术之一,它通过高效的向量存储和检索能力,为大模型提供强大的支持。
三、应用场景
向量数据库在多种场景下都有广泛的应用,包括但不限于图像识别、自然语言处理和推荐系统等。
四、LLM与向量数据库的未来
结合大型语言模型(LLM)和向量数据库,未来的AI应用将更加智能和高效。
作者简介
- 分享嘉宾:焦恩伟,Zilliz首席工程师
- 编辑整理:刘华
- 内容校对:李瑶
- 出品社区:DataFun
本文由DataFun社区出品,旨在分享Milvus在AI Native时代的数据库技术和应用前景。
大模型幻觉现象解析
1. 幻觉问题概述幻觉问题在大模型的训练和推理过程中较为常见。这主要是因为大模型仅存储其参数和架构,而并不存储实时推理所需的文本信息。因此,当进行推理时,模型会依赖于之前学习到的语料和知识,通过概率生成来完成任务。
2. 幻觉产生原因
- 训练语料不足:如果训练语料中对中文的支持不够充分,将影响模型对中文内容的理解和生成能力。
- 微调标注问题:在微调过程中,如果标注不准确,将导致模型在处理特定信息时产生偏差,例如鲁迅与周树人的相关性问题。
3. 解决方案探讨
- 增强训练语料:通过增加高质量的中文语料,提高模型对中文内容的处理能力。
- 改进微调过程:确保微调过程中的标注准确性,减少模型推理时的偏差。
4. 结论大模型在处理中文内容时可能会遇到幻觉问题,但通过优化训练语料和微调过程,可以显著提高模型的准确性和可靠性。
解决幻觉问题已成为业界的热点议题。业界针对此问题采取了多种解决策略,具体如下:
-
微调策略:这是一种通过额外训练来调整模型的方法。然而,由于成本和数据安全等考量,许多厂商对微调持谨慎态度。此外,微调本身也存在一定的局限性。
-
提示工程:此方法通过向大型模型输入前置条件,以引导模型正确处理信息。这要求设计者精心设计和调整提示,确保模型能够准确理解和执行。 以上两种方法都是目前业界尝试解决幻觉问题的主要途径。
在现代企业管理中,知识库的构建和应用已成为提升信息检索效率和知识共享的关键手段。以下是对使用知识库作为解决方案的详细阐述: -
知识库的定义与重要性
- 知识库是企业内部积累的知识和信息的集合,它能够促进知识的共享和创新。
- 现有资源的利用
- 企业可以利用现有的资源,如内部wiki、飞书文档等,作为知识库的原始数据来源。
- 向量数据库的应用
- 向量数据库是一种先进的技术,它能够将文本数据转换为向量(embedding),并存储在数据库中。
- 文本的分割与存储
- 通过向量数据库,文档可以被有效分割并转换为向量形式,便于存储和检索。
- 语义理解和数据检索
- 向量数据库支持通过文本相似性进行检索,帮助用户快速找到相关信息。
- 知识关联的发现
- 利用向量数据库的聚类功能,可以发现知识之间的内在联系,促进知识的综合应用。
- 实施步骤
- 首先,收集和整理企业内部的文档和数据。
- 其次,选择合适的向量数据库技术进行文本的向量化处理。
- 最后,建立检索和聚类机制,以实现高效的知识管理和应用。
通过上述步骤,企业可以构建一个结构化、高效的知识库系统,从而提升企业的竞争力和创新能力。
CVP架构概述
Zilliz公司在AIGC时代提出了CVP架构,这是一种创新的系统设计,旨在简化AI时代应用程序的开发。CVP架构由几个关键组件构成:
1. 计算引擎计算引擎是CVP架构的核心,通常由大型AI模型如ChatGPT担任。这些模型负责处理和生成数据,提供智能决策支持。
2. 存储单元存储单元的角色由向量数据库承担,负责存储和管理大量的向量数据,确保数据的快速检索和高效利用。
3. 控制单元Prompt-as-Code技术作为控制单元,用于指导和优化计算引擎的工作流程,提高系统的响应速度和准确性。
4. 其他组件
- 缓存:提高系统性能,减少延迟。
- 驱动:负责将数据有效加载到向量数据库中。
- 操作系统与框架:提供底层支持,如LangChain或LlamaIndex等产品。
组件选择在选择操作系统、框架和驱动等其他组件时,开者可以根据项目需求和特定场景,选择最合适的产品来构建CVP架构。
结论CVP架构通过整合计算引擎、存储单元和控制单元,为AI时代的应用程序开发提供了一种高效、灵活的解决方案。
OSSChat 问答机器人介绍
概述OSSChat 是 Zilliz 公司开发的一款面向开源用户和社区运维人员的问答机器人。该产品旨在通过智能化手段,提高社区运维的效率,解决重复性问题。
功能特点
- 提高效率:自动化回答社区中的常见问题。
- 数据真实性:使用向量数据库存储最新数据,确保答案的时效性和准确性。
技术架构
- 数据获取:从项目官方首页或开源社区获取数据。
- 数据存储:
- 向量数据库:存储经过embedding处理的数据。
- 对象存储/关系型数据库:存储原始数据。
- 问题处理:
- 用户提问后,系统从向量数据库检索答案。
- 使用 ChatGPT 进行推理,生成更真实有效的答案。
解决问题
- 幻觉问题:通过向量数据库的实时数据更新,减少幻觉问题的出现。
- 数据真实性:提供答案来源信息,增强用户信任。
信息来源OSSChat 项目通过向量数据库存储信息来源,确保所提供答案的真实性和可靠性。
结论OSSChat 作为一个问答机器人,不仅提高了开源社区的运维效率,还通过技术手段确保了答案的准确性和真实性。
在CVP架构中,LLM不仅可以使用ChatGPT,如果有私有部署的需求,如企业内部不允许连接外网,或者有数据安全方面的限制,可以使用开源的大模型进行私有化部署。但如果想达到更好的效果,需要进行微调或重训练。
向量数据库与传统数据库的对比
一、向量数据库的特点向量数据库将向量作为核心数据类型,与传统数据库相比,它更注重向量数据的处理和检索。这种数据库设计为向量数据提供了优化的存储和查询机制。
1. 向量作为一等公民
- 向量数据库在设计时,将向量数据视为基本元素,为它们提供了专门的处理和优化。
2. 向量检索与传统数据库的差异
- 向量检索需求与传统的数据库操作不同,它更侧重于向量数据的快速检索和匹配。
二、传统数据库的特点传统数据库在设计时主要考虑的是结构化数据的存储和管理,对于非结构化数据,尤其是向量数据的支持有限。
1. 重IO操作
- 传统数据库关注磁盘IO、CPU使用率等指标,以优化结构化数据的存储和查询效率。
2. 非向量优化
- 传统数据库设计不太可能为向量数据做出特别的优化和妥协。
三、向量数据的重要性向量数据是为了解决非结构化数据在计算机中的应用问题而产生的。它们提供了一种有效的数据表征方式,允许将非结构化数据映射到高维空间中。
1. 非结构化数据的语义信息
- 非结构化数据的特点是包含丰富的语义信息,而不仅仅是数据的比特长度。
2. 向量的表征能力
- 向量可以将非结构化数据映射成高维空间中的点,例如三维向量在三维空间中的映射。
四、设计考虑在设计向量数据库时,需要考虑计算节点和存储的优化,包括CPU和GPU的使用,以适应向量数据的特殊需求。
在向量空间中,确定两个向量是否相似可以通过多种方法进行。以下是一些常用的方法:
-
距离度量:通过计算两个向量之间的距离,如果距离较小,则可以认为它们是相似的。距离的计算通常使用欧几里得距离或余弦相似度。
-
夹角计算:观察两个向量与原点形成的夹角,如果夹角较小,说明它们的方向相近,从而可以判断它们是相似的。
-
深度学习转换:在深度学习模型中,原始的非结构化数据可以被转换成向量数据。这些向量数据可以用于多种应用场景,例如:
- 分类:用于区分不同类别的数据。
- 回归:用于预测连续的数值。
- 检索:用于快速找到相似的项。
- 深入分析:进行更复杂的数据分析。
向量数据的应用非常广泛,它们在AI领域中扮演着重要的角色。例如,在图像识别中,如果两张图片在向量空间中的位置相近,那么它们可能代表相似的物体或场景。相反,如果一张是盆栽的图片,另一张是山的图片,它们在向量空间中的距离就会相对较远。
向量数据库是专门为AI和机器学习设计的数据库,它们优化了对向量数据的存储和检索操作。这些数据库能够高效地处理和分析大量的向量数据,为AI应用提供了强大的支持。
构建向量数据库是一个复杂的过程,涉及到多个关键方面的考量。以下是构建向量数据库时需要关注的要点:
-
存储与持久化:开发数据库时,首先需要考虑的是如何实现低成本的存储解决方案,确保数据可以持久化存储。
-
ANN检索效率:面对海量的向量数据,如何高效地进行近似最近邻(ANN)检索是至关重要的。这直接影响到数据库的性能和响应速度。
-
并发控制:多用户环境下,数据库需要能够妥善处理并发访问,确保数据的一致性和完整性。
-
数据管理:包括数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete),以及元数据信息和向量列的混合存储。
-
部门或业务分区:为了更好地组织和管理数据,数据库需要支持部门或业务的分区功能。
-
权限管理:合理的权限管理机制可以确保数据安全,防止未授权访问。
-
GPU加速:利用GPU进行加速计算,可以显著提高数据库的运算效率。
-
国产化支持:随着技术的发展,国产化支持也成为数据库开发中需要考虑的一个方面。
-
监控与运维:数据库开发完成后,持续的监控报警和运维工作是保证数据库稳定性和可靠性的关键。 以上要点构成了构建向量数据库时需要考虑的主要方面,每一步都需要精心设计和实现,以确保数据库的高效、稳定和安全。
Milvus向量数据库的特点
Milvus作为全球首款开源向量数据库,具备以下显著特点:
1. 云原生设计Milvus采用分布式架构,支持高度扩展性。其无状态节点设计,使得在k8s或docker等云环境中部署变得极为便捷。
2. 高性能在数据量庞大或高并发的场景下,Milvus展现出至少十倍于其他竞品的性能优势。VectorDBBench项目的最新开源代码和公开数据集进一步验证了这一点。
3. 可插拔的索引引擎Milvus提供了统一的接口,用户可以根据需求选择不同的索引参数,无需自行对接多种索引技术。
4. 云端一体的部署无论是在云端环境还是本地,Milvus都支持通过docker快速部署,让用户能够迅速体验Milvus的强大功能。
在分布式数据库Milvus中,架构设计充分考虑了云原生环境下的弹性伸缩和扩展性能需求。以下是对Milvus架构的详细解析:
- 节点拆分:Milvus通过将节点分拆,实现了各节点的独立弹性扩缩容能力。
- Proxy节点:位于架构的最左侧,作为客户端的入口。
- Data节点:位于架构的上方,负责数据存储。根据数据写入需求,Data节点可以在低峰时段关闭,以节省成本。
- Query节点:位于架构的下方,负责查询处理。
- Index节点:位于架构的右侧,负责索引构建。由于索引构建是批处理任务,因此Index节点可以独立于数据写入进行优化。
- 存储策略:Milvus采用了灵活的存储方案,以适应不同场景的需求。
- 持久化数据:使用S3或MinIO等对象存储服务,确保数据的持久性和可靠性。
- 实时数据:存储在消息队列中,目前支持Pulsar和Kafka。
- 未来规划:Milvus计划在2.4版本中引入自研消息队列,旨在进一步降低用户的运维成本。
通过这种设计,Milvus不仅提高了系统的可扩展性和灵活性,同时也为用户在云环境中的资源管理提供了便利。
3. Milvus 与 AIGC 场景的优化
Milvus 在人工智能生成内容(AIGC)场景中进行了多项优化,以满足不同用户的需求。以下是 Milvus 的主要优化点:
支持 JSON 和动态 SchemaMilvus 支持 JSON 格式和动态 Schema,使得数据结构更加灵活,便于用户根据不同需求调整数据模型。
分区能力Milvus 提供了分区功能,这有助于管理和优化大规模数据集,提高数据检索效率。
磁盘索引对于性能要求不高但对成本敏感的用户,Milvus 提供了磁盘索引,以降低成本同时满足基本性能需求。
离线导入海量文档Milvus 支持离线导入大量文档,这有助于解决冷启动问题,即在系统初次启动时快速填充数据。
与 AI 产品深度集成Milvus 与多个 AI 相关产品进行了深度集成,例如 LangChain、OpenAI 和 AutoGPT 等,增强了 AI 功能和应用场景。
多语言客户端支持Milvus 提供了多种语言的客户端支持,包括 Python、Go、Java、C# 和 Ruby 等,鼓励不同语言背景的开发者贡献和使用。
贡献和社区Milvus 鼓励具有其他编程语言经验的开发者为社区贡献新的客户端,以支持更广泛的编程语言和应用场景。
性能比较分析
概述本文将对ANN(Approximate Nearest Neighbor)Benchmark的性能进行比较分析。我们将重点讨论两个不同的技术实现:自研的向量检索库’Glass’和开源的Milvus引擎’Knowhere’。
技术实现对比
- Glass: 这是我们实验室自主研发的向量检索库版本,目前尚未对外开源。它代表了我们团队在向量检索领域的最新研究成果。
- Knowhere: 这是Milvus使用的开源引擎,相较于Glass,其性能表现存在一定差距。
Milvus的优势Milvus不仅在性能上有所优化,还具备以下特点:
- 快速过滤: 支持对未构建索引的标量数据或实时插入的数据进行快速过滤。
- 深度优化: 对开源库进行深度优化,以应对实际工程问题。
- 工业界实践: 结合工业界实践,解决内存管理、线程调度和线程安全等关键问题。
结论通过上述分析,我们可以看出,尽管’Glass’和’Milvus’的’Knowhere’引擎在性能上存在差异,但Milvus通过其深度优化和工业界实践,提供了更为全面和稳定的解决方案。
03
应用场景
1.用户标识
Milvus是一个开源的向量数据库,它拥有广泛的用户基础和活跃的社区。以下是Milvus社区的一些关键信息:
- 用户基础
- Milvus已经吸引了超过1000家用户,这些用户在采用开源Milvus之前就已经在使用该技术。
- AIGC的影响
- 随着人工智能生成内容(AIGC)的兴起,预计Milvus的用户数量将会进一步增加。
- GitHub星标增长
- Milvus在GitHub上的星标数量接近21000,仅在过去一个月内就增加了将近2000个星。
- 贡献者数量
- 包括Milvus项目本身、Milvus客户端以及配套项目,贡献者人数超过300人,这显示了社区的活跃度和多样性。
- 社区排名
- 在DB-Engines的排名中,Milvus位列第205位,这反映了其在数据库领域的竞争力。 此外,OSSChat作为一个开源社区支持工具,致力于解决大模型的幻觉问题,通过提供问题解答和代码生成服务,帮助社区成员更有效地进行技术交流和协作。 OSSChat的特点
- 专为开源社区设计,帮助用户解答技术问题。
- 生成代码片段,提高开发效率。
- 目标是减少大模型带来的误解和幻觉,提供准确的技术信息。
Milvus和OSSChat都是开源社区的重要组成部分,它们通过各自的方式促进了技术的共享和创新。
GPTCache简介
GPTCache是一款旨在提升大模型问答效率的产品,它通过缓存问答结果来加快模型的推理速度。在网络条件受限或不稳定的情况下,使用OpenAI等大模型服务可能会遇到延迟问题。GPTCache通过查询向量数据库来提供更快速的响应时间。
支持的数据库
GPTCache目前支持连接以下向量/标量数据存储系统:
- Milvus
- FAISS
- PGVector
社区贡献
用户可以贡献代码,以支持GPTCache连接更多的数据存储产品。这不仅能够丰富GPTCache的功能,也有助于社区成员共享和利用更多的资源。
使用场景
- 网络不稳定时的问答加速:在网络条件不佳时,GPTCache可以减少因网络延迟导致的问答等待时间。
- 频繁查询的优化:对于用户频繁查询的问题,GPTCache通过缓存机制,避免了重复的网络请求,从而提高了问答效率。
多模态检索技术是人工智能领域的一项重要进展,它允许用户通过多种方式进行信息检索,如文本、图像、视频等。这种技术的应用范围广泛,包括但不限于文本到图像的搜索、图像到视频的搜索、视频到文本的搜索以及图像到视频的搜索等。 技术实现 在技术实现方面,一些公司已经取得了显著的进展。例如,Meta公司开源了名为Imagebind的模型,该模型能够将不同类型的数据嵌入到统一的向量空间中,从而实现高效的多模态混合查询。 应用场景 多模态检索技术的应用不仅限于与大型AI模型的结合,还广泛应用于推荐系统、搜索引擎和安全风控等多个领域。这些技术主要用于实现语义检索和语义召回,以提高检索的准确性和效率。 实际应用案例 一些知名的互联网公司已经将多模态检索技术应用于实际业务中。例如,快手、虾皮和得物等公司,它们通过这项技术提升了用户体验和业务效果。
向量数据库的未来展望
1. 部署运维能力向量数据库的部署和运维可以显著降低成本,但同时也存在一定的技术门槛。这包括数据库的部署、日常运维、性能调优、系统升级以及横向扩展等关键环节。为了有效解决这些问题,企业可能需要组建专门的技术团队,或者选择云服务提供商的解决方案,甚至考虑采用SaaS服务模式。
2. 查询能力的提升向量数据库的查询能力预计将得到显著增强。目前,这类数据库主要支持基于向量的检索功能,但未来它们有望被应用于更多样化的搜索场景。一些产品已经实现了向量检索与关键词检索的混合查询,这为用户提供了更灵活的搜索选项。
2.1 综合打分与排序用户可以利用多个模型对数据进行综合评估和排序。例如,通过将两个模型应用于文本或图像数据的向量表示,然后根据这些向量的相似度进行排序,从而满足用户对排序准确性的更高要求。
3. 功能丰富性向量数据库将提供更加丰富的功能,如数据备份、数据可视化管理等,以增强用户体验和数据的可管理性。
4. 查询接口的多样化为了满足不同用户的需求,向量数据库的查询接口也将变得更加多样化,包括但不限于支持广泛使用的SQL语言。
5. 性能与成本优化性能和硬件成本是用户选择数据库时的重要考量因素。通过采用如GPU、ARM等不同类型的高性能硬件,可以显著提升系统性能,同时降低整体成本。
6. 智能化调优通过智能化的调优手段,可以进一步提升系统性能。例如,Zilliz商业版提供的auto index功能,能够根据用户的需求自动选择最合适的索引策略,简化了用户的操作流程,降低了维护成本。
Zilliz Cloud服务概览
服务上线信息Zilliz Cloud服务现已在阿里云平台上线,国内用户亦可便捷访问。
服务特点
- 全天候支持: 提供7×24小时的云服务支持。
- 高可用性: 保证99.9%的服务水平协议(SLA)。
- 数据安全: 包含数据备份功能,确保数据不丢失。
- 企业级功能: 支持订阅能力与组织架构管理等企业级需求。
安全特性
- 权限管理: 实现基于角色的访问控制(RBAC)。
- 访问控制: 提供白名单功能,限制访问来源。
- 审计日志: 私有链接审计,保障操作透明可追溯。
开发者支持
- 在AWS和GCP平台上,Zilliz Cloud为开发者提供永久免费实例,以支持快速部署向量数据库,满足开发过程中的快速验证需求。
结构化内容
- 服务概览: 介绍Zilliz Cloud服务的基本信息和上线平台。
- 服务特点: 列举服务的主要优势和企业级特性。
- 安全特性: 强调系统的安全性和管理功能。
- 开发者支持: 说明为开发者提供的便利和资源。
以上内容以清晰的结构和条理呈现Zilliz Cloud服务的关键信息。
今天的分享就到这里,谢谢大家。
分享嘉宾
INTRODUCTION
焦恩伟
Zilliz
首席工程师
焦恩伟是Zilliz公司的首席工程师,他不仅在Milvus查询引擎的研发工作中担任重要角色,还是Apache Kylin开源项目的积极参与者。在加入Zilliz之前,焦恩伟在Kyligence公司担任Apache Kylin和MDX for Kylin商业产品的研发负责人,积累了丰富的OLAP、数据库、大数据以及开源商业化领域的研发经验。他拥有上海交通大学硕士学位,这为他的职业生涯提供了坚实的学术基础。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240730/%E5%81%9C%E6%AD%A2%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%B9%BB%E8%A7%89MilvusAI-Native%E6%97%B6%E4%BB%A3%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com