8.6 Rag-基础工具介绍(开源工具)
1 数据预处理工具
2 数据存储-向量数据库
向量数据库与存储标量值的传统数据库不同,向量数据库专门设计用于处理多维数据点(通常称为向量)。这些向量表示多个维度的数据,可以被认为是指向空间中特定方向和大小的箭头。
2.1 什么是向量数据库
向量数据库是一种特殊的数据库,它以多维向量的形式保存信息。根据数据的复杂性和细节,每个向量的维数变化很大,从几个到几千个不等。这些数据可能包括文本、图像、音频和视频,使用各种过程(如机器学习模型、词嵌入或特征提取技术)将其转换为向量。
矢量数据库的主要优点是它能够根据数据的矢量接近度或相似性快速准确地定位和检索数据。这允许基于语义或上下文相关性的搜索,而不是像传统数据库那样仅仅依赖于精确匹配或设置标准。
2.2 向量数据库是如何工作的
传统数据库以表格格式存储简单的数据,然向量数据库处理称为向量的复杂数据,并使用独特的搜索方法。
常规数据库搜索精确的数据匹配,而向量数据库使用特定的相似性度量来查找最接近的匹配。向量数据库使用称为“近似最近邻”(Approximate Nearest Neighbor)搜索的特殊搜索技术,其中包括哈希和基于图的搜索等方法。
要真正理解矢量数据库是如何工作的,以及它与传统的关系数据库(如SQL)有何不同,我们必须首先理解嵌入的概念。
非结构化数据(如文本、图像和音频)缺乏预定义的格式,这给传统数据库带来了挑战。为了在人工智能和机器学习应用中利用这些数据,我们需要使用嵌入将其转换为数字表示。
嵌入就像给每一个项(无论是一个词,图像,或其他东西)一个独特的高维数字表示,捕捉其意义或本质。这段数字帮助计算机以更有效和更有意义的方式理解和比较这些项。
这种嵌入过程通常使用为该任务设计的一种特殊的神经网络来实现。例如,单词嵌入将单词转换为向量,这样具有相似含义的单词在向量空间中更接近。这种转换允许算法理解项之间的关系和相似性,设置可以针对不同的数据进行编码,比如CLIP。
从本质上讲,嵌入作为一个桥梁,将非数字数据转换为机器学习模型可以使用的形式,使它们能够更有效地识别数据中的模式和关系。
2.3 向量数据库使用案例
向量数据库在实现“相似性搜索”方面是非常有效率的,所以它可以用于以下一些场景:
- 推荐系统:向量数据库可以用于存储用户和物品的特征向量,以便实现个性化推荐。通过计算相似度,可以找到与用户历史行为或兴趣相似的物品,从而提供更好的推荐体验。
- 图像搜索:图像可以表示为高维向量,向量数据库可以用于存储和检索图像数据。用户可以通过查询相似图像来进行图像搜索,这在电子商务、社交媒体和图像库管理等领域非常有用。
- 自然语言处理(NLP):在NLP任务中,将文本转换为嵌入向量是一种常见的方法。向量数据库可以用于存储文本嵌入向量,以便进行语义搜索、情感分析和文本聚类等任务。
- 语音识别:语音特征可以表示为高维向量,向量数据库可用于存储和检索音频数据。这对于语音识别、说话人识别和音频检索等应用非常重要。
- 3D 模型和点云处理:在计算机图形学和计算机视觉中,3D 模型和点云数据通常表示为向量或嵌入向量。向量数据库可以用于存储和检索这些数据,支持虚拟现实、增强现实和三维建模等应用。
- 网络安全:向量数据库可用于存储网络流量数据、恶意软件特征向量和网络行为模式。这些数据库可以帮助检测异常网络活动和网络入侵。
- 科学研究:在科学研究中,研究人员可以使用向量数据库来存储和分析实验数据,以便进行数据挖掘、模式识别和实验结果比对。
- 物联网(IoT):物联网设备生成大量数据,包括传感器数据和设备状态信息。向量数据库可以用于存储和检索这些数据,以支持智能城市、智能家居和工业自动化等应用。
- 医疗保健:在医疗领域,向量数据库可用于存储患者的医疗记录、医学图像和基因序列数据。这有助于医疗保健专业人员进行疾病诊断、药物研发和个性化治疗。
2.4 常见向量数据库
列表没有特别的顺序。
0 Milvus
- 特点:开源分布式向量数据库,专为大规模向量相似性搜索设计110
- 优势:
- 支持多种索引类型(HNSW、IVF等)和相似度计算方法1
- 可处理PB级数据,从笔记本电脑到大型分布式系统均可运行1
- 支持混合搜索(向量+元数据过滤)10
- 应用场景:推荐系统、图像检索、NLP等1
1、Chroma
Chroma是开源嵌入数据库。通过为LLM提供可插入的知识,事实和技能,使构建LLM应用程序变得容易,可以轻松地管理文本文档,将文本转换为嵌入,并进行相似度搜索。
主要特点:
- 功能丰富:查询、过滤、密度估计和许多其他功能
- LangChain (Python和javascript), LlamaIndex都支持
- 在Python notebook 中运行的相同API可扩展到生产集群
2、Pinecone
Pinecone是一个可以托管向量数据库平台。也就是说有背后的而商业公司,有免费使用方案。Pinecone的主要特点包括:
- 支持全托管服务
- 高度可伸缩
- 实时数据摄取
- 低延迟的搜索
- 与LangChain集成
3、Weaviate
Weaviate是一个开源向量数据库。它可以无缝扩展到数十亿个数据对象。Weaviate的一些关键特性是:
- 速度:Weaviate可以在几毫秒内从数百万个对象中快速搜索出最近的10个邻居。
- 灵活性:使用Weaviate,可以在导入或上传自己的数据时对数据进行矢量化,可以利用与OpenAI, Cohere, HuggingFace等平台集成的模块。
- 快速部署:从原型到大规模生产,Weaviate都强调可伸缩性、复制和安全性。
- 搜索扩展:除了快速矢量搜索,Weaviate还提供推荐、摘要和神经搜索框架集成。
4、Faiss
Faiss是一个用于快速搜索相似性和密集向量的聚类的开源库。它包含能够在不同大小的向量集中搜索的算法,甚至可以处理那些超过内存容量的向量集。此Faiss还提供了用于评估和调整参数的辅助代码。
虽然它主要是用c++编写的,但它完全支持Python/NumPy集成。它的一些关键算法也可用于GPU执行。Faiss的主要开发工作由Meta的基础人工智能研究小组承担。
5、Qdrant
Qdrant可以作为API服务运行,支持搜索最接近的高维向量。使用Qdrant,可以将嵌入或神经网络编码器转换为应用程序,用于匹配,搜索,推荐等任务。以下是Qdrant的一些关键功能:
- 通用的API:提供OpenAPI v3规范和各种语言的现成客户端。
- 速度和精度:使用自定义HNSW算法进行快速准确的搜索。
- 先进的过滤方法:允许基于相关矢量有效载荷的结果过滤。
- 不同的数据类型:支持字符串匹配、数字范围、地理位置等。
- 可伸缩性:具有水平扩展功能的云原生设计。
- 效率:内置Rust,通过动态查询规划优化资源使用。
2.5 总结
ref:https://zhuanlan.zhihu.com/p/656159876
3 词潜入向量如何选择
有两个榜单MTEB地址:
- 新版本:https://huggingface.co/spaces/mteb/leaderboard
- 旧版本:https://huggingface.co/spaces/mteb/leaderboard_legacy
- 模型大小: 影响计算资源需求和延迟。例如,较大的模型如 gte-Qwen2-7B-instruct(7 亿参数)可能更适合复杂任务,但计算成本更高。
- 嵌入维度: 维度较低的模型(如 384 维的 all-MiniLM-L6-v2)存储和比较更快,但可能牺牲语义捕捉能力。
- 语言支持: 多语言模型如 multilingal-e5-large 适合跨语言应用,而单语言模型可能在特定语言上表现更好。
- 预训练与微调: 预训练模型如 intfloat/e5-large-v2 适合通用场景,领域特定模型如 PubMedBERT(医学领域)则需微调以适应特定数据。
- 存储和内存等资源需求: 高维向量需要更多的存储空间,这可能会带来长期成本。例如,较高维度的模型如 text-embedding-ada-002 需要更多的存储资源。另外,较大的模型可能会占用更多内存,因此不适合内存有限的设备。
- 推理时间: 如果你的应用场景对响应时间有高要求,需要选择在推理时速度较快的模型。
- 模型在特定领域的表现: 通用 Embedding 模型在特定垂直领域(如医学、法律和金融等)可能不如专用模型有效。这些领域通常需要专门训练 Embedding 模型来捕捉特定的专业术语和语境。为特定业务需求优化的 Embedding 模型能够显著提升检索和生成的质量。例如,通过结合向量检索和重排序(reranking)技术,可以进一步优化结果。
- 处理长文本的能力: 切分的文本片段后续需要通过 Embedding 模型进行向量化,所以必须考虑向量模型对输入文本块的 tokens 长度限制,超出这个限制则会导致模型对文本进行截断,从而丢失信息,影响下游任务的性能。不同的 Embedding 模型对文本块长度的支持能力不同。比如,BERT 及其变体通常支持最多 512 个tokens,处理长文本时则需要将文本分成更小的块,意味着需要更加精细化的分块策略。而 Jina AI 的 Embedding 模型和 bge-m3 模型则支持 8K 的 tokens 输入,适合处理长文本块。
- 模型的可扩展性与易用性 : 微调和更新的能力:对于一个不断迭代的RAG系统,选择一个能够轻松微调和持续更新的模型至关重要。比如Hugging Face的Transformers库、FlaggEmbedding提供了便捷的微调工具。模型是否易于集成进现有的RAG架构?文档是否清晰?社区支持如何?
- 成本与可用性: 开源模型(如 E5 系列)免费,专有模型(如 OpenAI 的 text-embedding-3-large)可能涉及 API 费用和隐私问题
链接:https://zhuanlan.zhihu.com/p/31981408298
4 召回模型
1 RRF,全称是 Reciprocal Rank Fusion,翻译过来就是“倒数排名融合”。
2 模型,排序模型。
3 LLM:LLM的出现为重新排名开辟了新的可能性。通过深入了解整个文档和查询,可以更全面地获取语义信息。
排序模型对比 (bge)
- 无论使用哪种嵌入模型(embedding model),重排序技术都能够达到更高的 hit rate 和 MRR,表明重排序技术的影响显著。
- 目前,最佳的重排序模型是 Cohere[2] ,但它是一项付费服务。开源的 bge-reranker-large 模型[3]具有与 Cohere 类似的能力。
- 嵌入模型(embedding models)和重排序模型(re-ranking models)如何组合也可能对 RAG System 的性能产生一定的影响,因此开发者可能需要在实际开发过程中尝试不同的组合。