0
0
0
0
专栏/.../

全文搜索功能已上线 TiDB Could Serverless(附实践教程)

 社区小助手  发表于  2025-06-25
转载

导读

生成式 AI 正以前所未有的方式为应用创新带来无限可能,也对数据基础设施的演进提出了全新挑战。AI 应用的数据构成天然是多模态数据的复杂融合体,应用与数据库的交互,也逐渐从单一维度的精确查询演变为语义、语法相结合的混合访问模式。

TiDB 在多模态数据底座能力方面持续演进,继支持向量搜索MCP 协议之后,现已在 TiDB Cloud Serverless 上线全文搜索(Beta)功能,欢迎大家试用体验。

TiDB 全文搜索介绍

全文搜索 (Full-Text Search) ,也称关键字搜索,旨在帮助用户在海量文本中精确、快速地定位包含特定关键词的内容,它与 TiDB 现有的向量搜索功能形成了能力互补:

向量搜索主要关注语义近似(如相同种类内容),而全文搜索主要关注准确匹配(如具体产品名)。两者结合,能有效满足复杂的混合搜索查询需求,显著提升 AI 应用的回答质量与准确性。

核心优势:

  • 多语言及混合语言支持:TiDB 全文搜索不需要用户指定语言,即可高质量地搜索多语言文本,并使用 BM25 算法进行相关性评分,返回给用户最相关的结果。TiDB 支持的语言包括英文、中文、日文、韩文等。此外,同一张表中多个语言的文本可以混合存储。这非常适用于 GenAI 的 SaaS 服务,如知识库场景,因为这类服务往往面向世界各地多语言用户。
  • 统一的数据底座,简化 AI 应用架构:TiDB 同时支持结构化和非结构化数据,并通过 SQL、Python 或其他您熟悉的编程语言提供查询 API。以基于知识图谱的 RAG 应用(GraphRAG)为例,用户只需部署 TiDB 即可托管所有数据,包括原始文本、知识图谱、向量数据、元信息等。更重要的是,用户可使用 SQL 在 TiDB 对所有结构数据进行交叉查询,例如轻松实现“搜索语义上最接近给定查询的知识图谱边,并返回其二度邻节点以及相应的文本块”。
  • 降低运营开销和成本: AI 应用存在用户流量的高峰和低谷,进而对数据库的用量也存在高峰和低谷。我们深知这一点——TiDB Cloud Serverless 是全托管的,全自动处理扩缩容,且基于实际使用量付费,从而能为您降低用户睡觉时的运营成本

混合搜索的价值:以 RAG 场景为例

在 RAG(检索增强生成) 应用中,用户问题多种多样,有些用户可能提出偏向于语义和理解的问题,有些用户可能提出偏向于具体产品名或关键字的问题。同时使用向量搜索和全文搜索(即混合搜索 Hybrid Search)通常能更好地涵盖多变的用户问题,利用这两种搜索方法的优势,确保找到更最相关的文档,从而生成更准确的回答,通常流程如下图所示。

即刻体验

我们提供两种方式,帮助您快速上手 TiDB 全文搜索。

通过 TiDB Labs 在线实验室体验

适合人群: 希望立即体验、免去任何本地环境配置的用户

TiDB Labs 是我们提供的免费在线实验环境,拥有沙盒 TiDB 集群,能执行 Python 程序,并包含我们精心设计的 Step by Step 教程,只需浏览器即可访问,非常适合快速了解和体验 TiDB 全文搜索的功能和用法。点击链接 即可体验 TiDB 全文搜索实验。

另外,该实验还涵盖了如何使用 PyTiDB Python SDK 对文本进行向量化嵌入、向量搜索、混合搜索等其他 AI 应用开发相关内容,推荐感兴趣的开发者进行体验。

实验环境自带了向量嵌入模型免费供您使用,无需担心是否需要申请 OpenAI API Key 等问题。

TiDB Labs(https://labs.pingcap.com)上除了可以体验全文搜索等 AI 相关的 TiDB 能力,还可以体验其他丰富的实验内容,这些都是在线、免费、无需搭建环境的,如:

  • 数据库管理实践:用户权限管理、集群监控、备份恢复等核心运维技能
  • SQL 调优专区:查询优化、索引设计、执行计划分析等性能调优技巧
  • 数据迁移工具:使用 Dumpling 导出数据、TiDB Lightning 导入数据、TiCDC 复制变更事件
  • 最新特性体验:TiDB V8.1/8.5 新特性实践,包括 TiProxy、向量搜索、全局索引等
  • AI 应用开发:结合 TiDB Vector Search, Full Text Search 和 Hybrid Search 构建 GenAI RAG 应用

本地开发,通过 Python SDK 连接 TiDB Serverless 体验

适合人群: 希望在自己熟悉的本地环境中,使用 PyTiDB SDK 深入探索和构建 AI 应用的开发者

优势:

  • 真实环境: 直接体验生产级的 TiDB Cloud Serverless 服务
  • 额度充裕: 免费账户额度充足,无需信用卡即可注册
  • 功能强大: PyTiDB SDK (https://github.com/pingcap/pytidb)提供了高度封装和友好的向量搜索、全文搜索和混合搜索 API,支持自动向量嵌入 (Auto Embedding) 等功能

操作步骤:

Step 1:在 eu-cental-1 区域创建 TiDB Cloud Serverless 集群

全文搜索目前仅在特定 region 的 TiDB Cloud Serverless 集群中提供,您可以遵循以下步骤在支持的 region 中免费创建 TiDB Cloud Serverless 集群:

  1. 如果您没有 TiDB Cloud 帐户,可在这里免费注册 (只需邮箱验证即可):https://tidbcloud.com/free-trial;如有账户,可在这里登录 :https://auth.tidbcloud.com/login。
  2. 点击 Create Cluster 创建集群 :https://tidbcloud.com/project/clusters,Tier 选择 Serverless,Cloud 选择 AWS,Region 选择 Frankfurt (eu-cental-1) ,点击 Create 即可创建 TiDB Cloud Serverless 集群。您的集群大约会在 30 秒内创建完毕。

Step 2:安装 PyTiDB SDK(开源地址:https://github.com/pingcap/pytidb)

pip install 'pytidb[models]'

# If you only need basic capabilities:
# pip install pytidb

Step 3:连接到 TiDB Cloud Serverless 集群

通过以下代码可以通过 Python 访问到 TiDB Cloud Serverless 集群。

from pytidb import TiDBClient

db = TiDBClient.connect(
    host="gateway01.eu-central-1.prod.aws.tidbcloud.com",
    port=4000,
    username="xxxxxxxxxxxxx.root",
    password="xxxxxxx",
    database="test",
)

其中的连接参数可遵循以下步骤从 TiDB Cloud 控制台中查看:

  1. 导航到 Clusters 页面 (https://tidbcloud.com/project/clusters),点击您的集群名称转到其概览页
  2. 单击右上角的 Connect。这将弹出一个连接对话框,其中列出了连接参数
  3. 单击 Generate Password 生成连接集群所需的密码。所有集群默认没有密码,且无法从外部连接。通过 Generate Password 按钮创建密码后才能从外部连接到集群。请注意保管好生成的密码,它将不会再次显示,遗忘后可以重新生成新的密码。
  4. 将连接参数填充到代码的对应位置中,如下所示。

Step 4:创建带有全文索引的表并插入一些示例数据

全文搜索依赖于全文索引。为了展示 TiDB 独特的混合语言搜索能力,以下例子中我们将使用中文、日文和英文三种语言的样例文本作为示例数据,这些样例文本是一些“蓝牙耳机”的产品说明:

from pytidb.schema import TableModel, Field
from pytidb.datatype import Text

class StockItem(TableModel, table=True):
    id: int = Field(primary_key=True)
    title: str = Field(sa_type=Text)

table = db.create_table(schema=StockItem)
table.create_fts_index("title")
table.bulk_insert([
    {"id": 1, "title": "イヤホン bluetooth ワイヤレスイヤホン "},
    {"id": 2, "title": "完全ワイヤレスイヤホン/ウルトラノイズキャンセリング 2.0 "},
    {"id": 3, "title": "ワイヤレス ヘッドホン Bluetooth 5.3 65時間再生 ヘッドホン 40mm HD "},
    {"id": 4, "title": "楽器用 オンイヤーヘッドホン 密閉型【国内正規品】"},
    {"id": 5, "title": "ワイヤレスイヤホン ハイブリッドANC搭载 40dBまでアクティブノイズキャンセル"},
    {"id": 6, "title": "Lightweight Bluetooth Earbuds with 48 Hours Playtime"},
    {"id": 7, "title": "True Wireless Noise Cancelling Earbuds - Compatible with Apple & Android, Built-in Microphone"},
    {"id": 8, "title": "In-Ear Earbud Headphones with Mic, Black"},
    {"id": 9, "title": "Wired Headphones, HD Bass Driven Audio, Lightweight Aluminum Wired in Ear Earbud Headphones"},
    {"id": 10, "title": "LED Light Bar, Music Sync RGB Light Bar, USB Ambient Lamp"},
    {"id": 11, "title": "无线消噪耳机-黑色 手势触控蓝牙降噪 主动降噪头戴式耳机(智能降噪 长久续航)"},
    {"id": 12, "title": "专业版USB7.1声道游戏耳机电竞耳麦头戴式电脑网课办公麦克风带线控"},
    {"id": 13, "title": "投影仪家用智能投影机便携卧室手机投影"},
    {"id": 14, "title": "无线蓝牙耳机超长续航42小时快速充电 流光金属耳机"},
    {"id": 15, "title": "皎月银 国家补贴 心率血氧监测 蓝牙通话 智能手表 男女表"},
])

Step 5:执行全文搜索

print(table.search("bluetooth耳机", search_type="fulltext").limit(3))

查询结果会使用 BM25 算法按相关性排序,最相关的文档在前:

[
    {"id": 14, "title": "无线蓝牙耳机超长续航42小时快速充电 流光金属耳机"},
    {"id": 11, "title": "无线消噪耳机-黑色 手势触控蓝牙降噪 主动降噪头戴式耳机(智能降噪 长久续航)"},
    {"id": 1, "title": "イヤホン bluetooth ワイヤレスイヤホン"},
]

您可以进一步参阅以下 TiDB Cloud 文档和开发生态文档了解更多相关内容:

结语

TiDB 的愿景,是成为 AI 时代真正一体化的数据基座,让开发者无需在多个割裂的系统间挣扎,即可无缝处理任何类型与规模的 AI 负载。全文搜索功能的发布,是我们朝着这一目标迈出的又一坚实步伐。

当然,这仅仅是开始。我们将持续打磨产品,在未来版本中不断提升易用性、优化搜索质量、支持更复杂的组合查询。

AI 时代的数据库应由构建者共同定义。我们期待您的声音,无论是问题、建议还是大胆的想法,都欢迎在 TiDB 社区论坛 asktug.com 与我们交流。

相关推荐:

【欢迎大家试用体验 🥳】

0
0
0
0

声明:本文转载于 https://mp.weixin.qq.com/s/39oh38B-T4EpwuwuCAcG6Q

评论
暂无评论