搜索
您的当前位置:首页正文

使用 Google El Carro 集成 LangChain 来管理 Oracle 数据库中的文档

来源:易榕旅网

在现代 AI 应用中,管理和操作文档数据是核心任务之一。本文将详细讲解如何使用 Google 开源的 El Carro Oracle Operator,通过 Kubernetes 高效运行和管理 Oracle 数据库实例,同时结合 LangChain 提供的文档操作工具,将 AI 体验扩展到 Oracle 数据库。

技术背景介绍

El Carro 是 Google 提供的开源工具,用于在 Kubernetes 中运行 Oracle 数据库。它通过声明式 API 提供一致的配置、部署和实时监控,同时避免供应商锁定。通过与 LangChain 集成,El Carro 支持直接在 Oracle 数据库中保存、加载和删除文档,为 AI 应用场景(如文档问答、聊天机器人等)赋能。

需要的安装组件:

  • El Carro & Oracle 数据库(配置见官方文档)
  • Python 环境下的 langchain-google-el-carro

核心原理解析

在 El Carro 集成中,主要涉及以下几个组件:

这些组件使得 Oracle 数据库可以高效地成为 LangChain 支持的文档存储后端。


代码实现演示

接下来,我们将从头示例如何使用 El Carro 与 LangChain 集成,涵盖从连接配置到文档操作的全过程。

1. 安装所需库

首先,为 Python 环境安装 langchain-google-el-carro 包:

%pip install --upgrade --quiet langchain-google-el-carro

2. 配置 Oracle 数据库连接

填入相关 Oracle 数据库的配置信息。

from langchain_google_el_carro import ElCarroEngine

# 配置数据库连接信息
HOST = "127.0.0.1"  # 数据库主机
PORT = 3307         # 数据库端口
DATABASE = "my-database"  # 数据库名
USER = "my-user"          # 数据库用户
PASSWORD = input("请输入数据库用户的密码: ")

# 初始化数据库连接池
elcarro_engine = ElCarroEngine.from_instance(
    db_host=HOST,
    db_port=PORT,
    db_name=DATABASE,
    db_user=USER,
    db_password=PASSWORD,
)

3. 初始化表结构

创建一个默认结构的表,用于存储文档。

# 初始化表
TABLE_NAME = "message_store"  # 表名
elcarro_engine.drop_document_table(TABLE_NAME)  # 删除旧表(如果存在)
elcarro_engine.init_document_table(table_name=TABLE_NAME)  # 初始化新表

4. 保存文档到数据库

将 LangChain 文档保存到数据库表中。

from langchain_core.documents import Document
from langchain_google_el_carro import ElCarroDocumentSaver

# 创建示例文档
doc = Document(
    page_content="Banana",
    metadata={"type": "fruit", "weight": 100, "organic": 1},
)

# 初始化文档保存器
saver = ElCarroDocumentSaver(
    elcarro_engine=elcarro_engine,
    table_name=TABLE_NAME,
)

# 保存文档
saver.add_documents([doc])
print("文档已保存到数据库!")

5. 加载文档

从数据库加载文档。

from langchain_google_el_carro import ElCarroLoader

# 初始化文档加载器
loader = ElCarroLoader(elcarro_engine=elcarro_engine, table_name=TABLE_NAME)

# 加载并打印文档
docs = loader.load()
print("加载的文档:", docs)

6. 按条件加载文档

通过 SQL 查询加载具有特定条件的文档,例如 organic=1

query = f"SELECT * FROM {TABLE_NAME} WHERE json_value(langchain_metadata, '$.organic') = '1'"

loader = ElCarroLoader(
    elcarro_engine=elcarro_engine,
    query=query,
)

# 加载文档
filtered_docs = loader.load()
print("查询到的文档:", filtered_docs)

7. 删除文档

从数据库中删除已存储的文档。

# 删除文档
saver.delete([doc])
print(f"数据库中剩余文档数量: {len(loader.load())}")

应用场景分析

通过 El Carro 和 LangChain 的集成,可以实现以下应用场景:

  1. 智能文档管理:自动将数据存储到 Oracle 数据库中,同时具备高效加载和查询能力。
  2. 文档问答系统:结合 LangChain 的语言模型能力,支持在数据库中检索和分析文档,从而生成智能化回答。
  3. 定制化数据流:支持复杂的 SQL 查询和自定义表结构,适配多元业务需求。

实践建议

  1. 数据库性能优化:对于大规模文档存储,建议预先规划表索引和分区策略,提高查询效率。
  2. 安全性配置:使用 Oracle 数据库时,确保对用户权限和 API 密钥的管理,避免数据泄露。
  3. 测试环境准备:在正式部署前,先在测试环境验证表结构和文档操作的完整性。

如果遇到问题欢迎在评论区交流。

—END—

因篇幅问题不能全部显示,请点此查看更多更全内容

Top