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 类,您需要提供 2 个内容
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 列表。在此示例中,创建的表将具有以下表列
- 内容(类型:text):用于存储水果描述。
- 类型(类型 VARCHAR2(200)):用于存储水果类型。
- 重量(类型 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 获取完整的代码示例。以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。