一次性搞定构建RAG的完整数据库套件要在数据库中构建高效的RAG, 除了向量搜索能力还需要什么? - multi-vectors search: 支持细粒度相似性查询, 传统向量检索基于聚合向量(也就是句子中所有token的向量聚合成1个向量后进行检索, 将丢失token的特征; 这也是为什么混合搜索会兴起的原因之一!)
- 《不是混合搜索? 另一种解决方案提高向量搜索结果相关性! 使用 PostgreSQL 中的 ColBERT rerank 增强向量搜索》
- rerank: 重排, 提升返回结果与查询目标的相关性
VectorChord Suite: 提供了在PG中构建RAG的完整套件(不包括图, 因为PG未来将支持PGQ语法 或 有其他插件已支持了!), 让我们一起来看看. 以下内容翻译自: https://blog.vectorchord.ai/all-in-one-vectorchord-suite-building-production-ready-rag-solutions-directly-in-postgresql VectorChord Suite: 构建RAG数据库的完整套件!检索增强生成 (RAG) 正在彻底改变我们与海量数据集和LLM的交互方式。RAG 系统通过先检索与“问题”相关的信息, 再结合这些“信息”和“问题”最终生成响应答案,提供更精准、更符合语境、更贴近当前世界的答案。然而,构建稳健、可扩展且高效的 RAG 流程仍面临诸多挑战,尤其是在生产环境中。 许多解决方案架构复杂,向量搜索、关键词搜索和主数据存储均使用不同的数据库(类似以前使用MySQL用户的常见解决方案, 搜索或分析就通过binlog同步到elasticsearch和数仓, 也是架构相当复杂, 同步问题、一致性问题、同步错误等诸多问题, 还有异构查询+结果合并的效率问题、成本提升、运维复杂度提升等.)。这通常会导致数据同步挑战、基础设施复杂性增加以及运营成本上升。 如果您可以在可信赖的 PostgreSQL 数据库中直接构建功能强大、可立即投入生产的 RAG 系统,情况会怎样? 了解VectorChord Suite,它是一系列 PostgreSQL 扩展程序,旨在将高性能向量搜索、原生 BM25 排序和灵活的标记化(tokenization)功能直接引入 Postgres。让我们探索这些组件以及它们如何赋能下一代 RAG 解决方案。 什么是 VectorChord Suite?该套件包含三个协同工作的关键 PostgreSQL 扩展: 1、VectorChord:核心向量搜索引擎。它专为在 PostgreSQL 中实现可扩展、高性能且节省磁盘空间的向量相似性搜索而设计。 2、VectorChord-bm25:此扩展直接在 PostgreSQL 内部实现了复杂的 BM25 排序算法,并利用了高效的 Block-WeakAnd 算法。BM25 是基于关键词频率和文档特征进行相关性排序的标准。 3、pg_tokenizer.rs:提供有效全文检索所需的基本文本标记功能,实现对全文检索的文本处理方式的细粒度控制。 通过结合这些扩展,您可以解锁在 PostgreSQL 中完整构建高级 RAG 系统的强大功能。 如何使用 VectorChord Suite您可以使用该tensorchord/vchord-suitedocker 镜像运行 TensorChord 提供的多个扩展程序。该镜像基于 Postgres 官方镜像,包含以下扩展程序: docker run \ --name vchord-suite \ -e POSTGRES_PASSWORD=postgres \ -p 5432:5432 \ -d tensorchord/vchord-suite:pg17-latest
# If you want to use ghcr image, you can change the image to `ghcr.io/tensorchord/vchord-suite:pg17-latest`.
# if you want to use the specific version, you can use the tag `pg17-20250414`, supported version can be foundinthe support matrix.
CREATE EXTENSION IF NOT EXISTS vchord CASCADE; CREATE EXTENSION IF NOT EXISTS pg_tokenizer CASCADE; CREATE EXTENSION IF NOT EXISTS vchord_bm25 CASCADE; \dx pg_tokenizer | 0.1.0 | tokenizer_catalog | pg_tokenizer vchord | 0.3.0 | public | vchord: Vector database pluginforPostgres, writteninRust, specifically designedforLLM vchord_bm25 | 0.2.0 | bm25_catalog | vchord_bm25: A postgresql extensionforbm25 ranking algorithm vector | 0.8.0 | public | vector datatypeand ivfflat and hnsw access methods
VectorChord Suite 的用例用例 1:使用原生 BM25 和 VectorChord 实现强大的混合搜索
 在 RAG 时代,有效的检索至关重要。单独的关键字搜索或向量搜索都不是完美的: 关键词搜索(类似 BM25):精准度高,能够查找关键词完全匹配的文档。它非常适合结构化查询和特定词条的搜索。然而,它在同义词、释义以及理解潜在含义或语义意图方面存在不足。(利用VectorChord-bm25和pg_tokenizer)。 向量搜索:捕捉概念之间的深层语义和关系,即使没有精确的关键词也能找到相关信息。然而,对于需要特定术语匹配的查询,它有时可能不够精准。(利用VectorChord)。
解决方案:混合搜索。VectorChord Suite 结合了 Postgres 中两种方法的优势,弥补了这一差距。您可以运行以下查询: VectorChord-bm25(由 pg_tokenizer 提供支持)以确保关键字的精确性。
两者的结果可以智能地组合(例如,使用基于reciprocal rank fusion(RRF)的 rerank 或 基于LLM的rerank),从而生成比单独使用任何一种方法都更准确、更符合上下文、更具有语义感知的最终排序, 得到更具有相关性的结果。这将显著提升您的 RAG 应用程序的检索性能。 用例 2:超越文本 - 使用 ColQwen2 和 VectorChord 的无 OCR RAG为 PDF 或扫描图像等文档构建 RAG 系统通常涉及繁琐的预处理流程。传统方法严重依赖光学字符识别 (OCR) 和版式分析来提取文本。此过程的问题包括: 容易出错: OCR 准确度随文档质量而有很大差异。 有损:在文本提取过程中,表格、图形、格式和相对定位等关键的视觉内容经常会丢失。
解决方案:无需 OCR 识别、直接使用视觉感知(Visually-Aware)的 RAG。如果您无需显式 OCR,就能根据文档的layout和内容进行查询,那会怎样? 现在可以通过结合以下方法实现这一目标: 1、多模态视觉语言模型 (VLM):像 ColQwen2 这样的模型可以处理图像(文档页面)并生成捕获文本内容和视觉layout信息的embedding。 2、VectorChord 的多向量(multi-vectors)功能: VectorChord 可以在 Postgres 中高效地存储和搜索每个文档的多向量 - 允许您在一个vector[]字段中存储代表不同方面(例如,文本内容、视觉布局)的embedding。(核心技术包括用于vector[]近似计算的MaxSim算子) 通过此设置,您可以直接在 PostgreSQL 中使用视觉元素的prompt(“查找带有比较销售数据的条形图的文档”)或文本和视觉prompt的组合来查询文档数据库。这简化了您的 RAG技术栈,通过保留视觉上下文来潜在地提高检索准确性,并消除了与传统 OCR 流程相关的瓶颈。 为什么要在 PostgreSQL 中构建 RAG?利用 Postgres 中的 VectorChord Suite 具有如下显著的优势: 统一数据:将源数据、文本、元数据和向量embedding保存在一个地方。 利用现有基础设施:利用您现有的 Postgres 专业知识、工具和操作实践。 事务完整性:受益于 PostgreSQL 强大的 ACID 保障。 丰富的生态系统:访问 Postgres 生态系统中提供的各种工具和功能。
结论VectorChord 套件将 PostgreSQL 转变为一个功能强大、可立即投入生产的平台,用于构建先进的 RAG 解决方案。通过集成高性能向量搜索 (VectorChord)、关键字排名 (VectorChord-bm25) 和灵活的文本处理 (pg_tokenizer) 三大插件,您可以直接在数据库中实现混合搜索和无 OCR 多模态检索等尖端技术。使用 PostgreSQL 中的 VectorChord,简化您的架构、提高检索准确性并充分释放 RAG 的潜力。 在我们之前的博客中,我们分享了一些用户案例,其中所有docker image都可以用 VectorChord Suite image 替换。 《不是混合搜索? 另一种解决方案提高向量搜索结果相关性! 使用 PostgreSQL 中的 ColBERT rerank 增强向量搜索》 《使用 Postgres Native BM25 和 VectorChord 进行混合搜索》 《超越文本: 使用 Modal 和 PostgreSQL+VectorChord 解锁无 OCR 的 RAG, 无惧PDF、扫描文档等》 |