要在数据库中构建高效的RAG, 除了向量搜索能力还需要什么?
VectorChord Suite: 提供了在PG中构建RAG的完整套件(不包括图, 因为PG未来将支持PGQ语法 或 有其他插件已支持了!), 让我们一起来看看.
以下内容翻译自: https://blog.vectorchord.ai/all-in-one-vectorchord-suite-building-production-ready-rag-solutions-directly-in-postgresql
检索增强生成 (RAG) 正在彻底改变我们与海量数据集和LLM的交互方式。RAG 系统通过先检索与“问题”相关的信息, 再结合这些“信息”和“问题”最终生成响应答案,提供更精准、更符合语境、更贴近当前世界的答案。然而,构建稳健、可扩展且高效的 RAG 流程仍面临诸多挑战,尤其是在生产环境中。
许多解决方案架构复杂,向量搜索、关键词搜索和主数据存储均使用不同的数据库(类似以前使用MySQL用户的常见解决方案, 搜索或分析就通过binlog同步到elasticsearch和数仓, 也是架构相当复杂, 同步问题、一致性问题、同步错误等诸多问题, 还有异构查询+结果合并的效率问题、成本提升、运维复杂度提升等.)。这通常会导致数据同步挑战、基础设施复杂性增加以及运营成本上升。
如果您可以在可信赖的 PostgreSQL 数据库中直接构建功能强大、可立即投入生产的 RAG 系统,情况会怎样?
了解VectorChord Suite,它是一系列 PostgreSQL 扩展程序,旨在将高性能向量搜索、原生 BM25 排序和灵活的标记化(tokenization)功能直接引入 Postgres。让我们探索这些组件以及它们如何赋能下一代 RAG 解决方案。
该套件包含三个协同工作的关键 PostgreSQL 扩展:
1、VectorChord:核心向量搜索引擎。它专为在 PostgreSQL 中实现可扩展、高性能且节省磁盘空间的向量相似性搜索而设计。
2、VectorChord-bm25:此扩展直接在 PostgreSQL 内部实现了复杂的 BM25 排序算法,并利用了高效的 Block-WeakAnd 算法。BM25 是基于关键词频率和文档特征进行相关性排序的标准。
3、pg_tokenizer.rs:提供有效全文检索所需的基本文本标记功能,实现对全文检索的文本处理方式的细粒度控制。
通过结合这些扩展,您可以解锁在 PostgreSQL 中完整构建高级 RAG 系统的强大功能。
您可以使用该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
在 RAG 时代,有效的检索至关重要。单独的关键字搜索或向量搜索都不是完美的:
关键词搜索(类似 BM25):精准度高,能够查找关键词完全匹配的文档。它非常适合结构化查询和特定词条的搜索。然而,它在同义词、释义以及理解潜在含义或语义意图方面存在不足。(利用VectorChord-bm25和pg_tokenizer)。
向量搜索:捕捉概念之间的深层语义和关系,即使没有精确的关键词也能找到相关信息。然而,对于需要特定术语匹配的查询,它有时可能不够精准。(利用VectorChord)。
解决方案:混合搜索。VectorChord Suite 结合了 Postgres 中两种方法的优势,弥补了这一差距。您可以运行以下查询:
VectorChord-bm25(由 pg_tokenizer 提供支持)以确保关键字的精确性。
VectorChord 用于语义理解搜索。
两者的结果可以智能地组合(例如,使用基于reciprocal rank fusion(RRF)的 rerank 或 基于LLM的rerank),从而生成比单独使用任何一种方法都更准确、更符合上下文、更具有语义感知的最终排序, 得到更具有相关性的结果。这将显著提升您的 RAG 应用程序的检索性能。
为 PDF 或扫描图像等文档构建 RAG 系统通常涉及繁琐的预处理流程。传统方法严重依赖光学字符识别 (OCR) 和版式分析来提取文本。此过程的问题包括:
慢: 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 流程相关的瓶颈。
利用 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、扫描文档等》
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |