Skip to main content
兼容性:仅在 Node.js 上可用。
Oracle AI 数据库支持通过语义(含义)而非仅关键词来查询数据的 AI 工作负载。它将非结构化内容的语义搜索业务数据的关系型过滤结合在一个系统中,因此您可以构建检索工作流(如 RAG),而无需引入单独的向量数据库或将数据分散在多个平台上。 本指南演示如何使用 OracleVS(用于 Oracle AI 向量搜索的 LangChain 向量存储集成)来:
  • 将文档和嵌入向量摄入到 Oracle 中
  • 运行相似性搜索
  • 创建 HNSW 和 IVF 索引
  • 应用元数据过滤器进行高级检索
  • 在 Oracle AI 数据库 26ai 中启用混合搜索(关键词 + 语义)
  • 使用 Oracle Text 运行全文搜索

概述

集成详情

设置

安装 Oracle 客户端绑定和 LangChain Oracle 辅助工具:
为将拥有向量表的 Oracle 用户设置连接凭据:

创建向量存储

以下示例假设您已经创建了一个包含向量和元数据列的表,并使用 OracleEmbeddings 生成了嵌入向量。
如果您的应用程序已经管理着一个 Oracle 数据库连接池,请将该池直接传递给 OracleVS。存储会根据需要获取和释放连接。

过滤搜索结果

您可以将丰富的元数据过滤器作为第三个参数传递给 similaritySearchsimilaritySearchWithScoresimilaritySearchVectorWithScore。过滤器作用于 Oracle VS 为每个文档维护的 JSON metadata 列。 支持的比较运算符包括 $eq(默认)、$ne$lt$lte$gt$gte$in$nin$between$exists。使用 $and$or 组合子句以构建更具表达力的谓词。
也支持嵌套逻辑子句。例如:

使用向量索引加速搜索

Oracle 数据库可以通过在 embedding 列上创建向量索引来加速相似性查询。@oracle/langchain-oracledb 辅助工具提供了一个 createIndex 实用程序,用于配置 HNSW(默认)或 IVF 索引。

HNSW 索引(默认)

当您想要一个平衡召回率和延迟的基于图的索引时,请使用 HNSW。省略 idxType 以使用默认配置,或覆盖诸如 neighborsefConstructionaccuracy 等参数。

IVF 索引

通过传递 idxType: "IVF" 以及要创建的邻居分区数来切换到 IVF。IVF 将向量分区到簇中,当您想要具有可预测内存使用量的粗量化时很有用。
在加载数据后(或在 initialize 之后)运行一次 createIndex,并在后续搜索中重用该索引。要重建或更换策略,请通过标准 SQL(DROP INDEX ...)删除现有索引,并使用新参数重新运行 createIndex

后续步骤