Google El Carro Oracle Operator 提供了一种在 Kubernetes 中运行 Oracle 数据库的方式,是一个可移植、开源、 社区驱动、无供应商锁定的容器编排系统。El Carro 提供强大的声明式 API,用于全面一致的配置和部署,以及实时操作和监控。 借助 El Carro LangChain 集成,扩展 Oracle 数据库的能力,构建 AI 驱动的体验。本指南介绍如何使用 El Carro LangChain 集成,通过
ElCarroLoader 和 ElCarroDocumentSaver
保存、加载和删除 LangChain 文档。
该集成适用于任何 Oracle 数据库,无论其运行在何处。
在 GitHub 上了解更多关于该软件包的信息。
开始之前
请完成 README 中的入门指南部分,以设置您的 El Carro Oracle 数据库。🦜🔗 安装库
该集成位于独立的langchain-google-el-carro 包中,需要单独安装。
基本用法
设置 Oracle 数据库连接
填写以下变量,输入您的 Oracle 数据库连接详情。ElCarroEngine 连接池
ElCarroEngine 为您的 Oracle 数据库配置连接池,支持应用程序成功建立连接,并遵循行业最佳实践。
初始化表
通过elcarro_engine.init_document_table(<table_name>) 初始化一个默认结构的表。表列为:
- page_content(类型:text)
- langchain_metadata(类型:JSON)
保存文档
使用ElCarroDocumentSaver.add_documents(<documents>) 保存 LangChain 文档。
要初始化 ElCarroDocumentSaver 类,您需要提供以下两项:
elcarro_engine-ElCarroEngine引擎的实例。table_name- Oracle 数据库中用于存储 LangChain 文档的表名。
加载文档
使用ElCarroLoader.load() 或 ElCarroLoader.lazy_load() 加载 LangChain 文档。
lazy_load 返回一个生成器,仅在迭代时查询数据库。
要初始化 ElCarroLoader 类,您需要提供:
elcarro_engine-ElCarroEngine引擎的实例。table_name- Oracle 数据库中用于存储 LangChain 文档的表名。
通过查询加载文档
除了从表中加载文档外,我们还可以选择从 SQL 查询生成的视图中加载文档。例如:删除文档
使用ElCarroDocumentSaver.delete(<documents>) 从 Oracle 表中删除一组 LangChain 文档。
对于具有默认结构(page_content, langchain_metadata)的表,删除条件为:
如果列表中存在某个 document,满足以下条件,则应删除对应的 row:
document.page_content等于row[page_content]document.metadata等于row[langchain_metadata]
高级用法
加载自定义页面内容和元数据的文档
首先,我们准备一个非默认结构的示例表,并填充一些任意数据。ElCarroLoader 的默认参数从此示例表加载 LangChain 文档,
则加载文档的 page_content 将是表的第一列,
metadata 将由所有其他列的键值对组成。
ElCarroLoader 时,通过设置 content_columns 和 metadata_columns 来指定要加载的内容和元数据。
content_columns:要写入文档page_content的列。metadata_columns:要写入文档metadata的列。
content_columns 中各列的值将以空格分隔的字符串拼接,作为加载文档的 page_content,
加载文档的 metadata 将只包含 metadata_columns 中指定列的键值对。
保存带自定义页面内容和元数据的文档
要将 LangChain 文档保存到带有自定义元数据字段的表中, 我们需要先通过ElCarroEngine.init_document_table() 创建这样的表,
并指定所需的 metadata_columns 列表。在此示例中,
创建的表将具有以下列:
- content(类型:text):用于存储水果描述。
- type(类型 VARCHAR2(200)):用于存储水果类型。
- weight(类型 INT):用于存储水果重量。
- extra_json_metadata(类型:JSON):用于存储水果的其他元数据信息。
elcarro_engine.init_document_table() 使用以下参数创建表:
table_name:Oracle 数据库中用于存储 LangChain 文档的表名。metadata_columns:sqlalchemy.Column列表,指定所需的元数据列。content_column:存储 LangChain 文档page_content的列名。默认值:"page_content", "VARCHAR2(4000)"metadata_json_column:存储 LangChain 文档额外 JSONmetadata的列名。默认值:"langchain_metadata", "VARCHAR2(4000)"。
ElCarroDocumentSaver.add_documents(<documents>) 保存文档。如示例所示:
document.page_content将保存到content列。document.metadata.type将保存到type列。document.metadata.weight将保存到weight列。document.metadata.organic将以 JSON 格式保存到extra_json_metadata列。
删除带自定义页面内容和元数据的文档
我们也可以通过ElCarroDocumentSaver.delete(<documents>) 从带有自定义元数据列的表中删除文档。删除条件为:
如果列表中存在某个 document,满足以下条件,则应删除对应的 row:
document.page_content等于row[page_content]- 对于
document.metadata中的每个元数据字段kdocument.metadata[k]等于row[k]或document.metadata[k]等于row[langchain_metadata][k]
row中没有document.metadata中不存在的额外元数据字段。
更多示例
请参阅 demo_doc_loader_basic.py 和 demo_doc_loader_advanced.py 获取完整的代码示例。Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

