Skip to main content
兼容性:仅适用于 Node.js 环境。
Oracle AI 数据库支持通过含义(语义)而非仅关键词来查询数据的 AI 工作负载。它将非结构化内容的语义搜索业务数据的关系过滤结合在单一系统中,因此您可以构建检索工作流(如 RAG),而无需引入单独的向量数据库或将数据分散在多个平台中。 本指南演示了如何使用 OracleVS(Oracle AI Vector Search 的 LangChain 向量存储集成)来:
  • 将文档和嵌入向量导入 Oracle
  • 执行相似性搜索
  • 创建 HNSW 和 IVF 索引
  • 应用元数据过滤器进行高级检索
  • 在 Oracle AI Database 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

后续步骤