基于 seekdb 多模融合构建文旅小助手
本文演示如何通过 seekdb 的多模融合技术构建您的 seekdb 文旅小助手。
在本示例中,通过 seekdb 的空间数据和向量搜索的多模融合来构建您的景点推荐应用,该应用可以利用 GIS 与向量数据混合搜索相关景区,结合大模型 Agent 工作流,实现简易旅行规划助手。
技术原理
-
空间数据处理技术:GIS 系统提供了精准的地理定位和最佳路线规划。
-
向量数据处理技术:采用预训练模型(BGE-m3)将景点的非结构化数据转换为向量表示,并使用 seekdb 向量搜索能力高效处理相似度搜索。
-
大模型 Agent 技术:在智能交互层面,运用大模型 Agent 技术,配合 Prompt Engineering 实现用户意图理解和多轮对话,实现复杂任务的分解与规划。同时提升了系统的交互体验,能够准确理解您的需求并提供个性化服务。
-
基于内容的推荐算法:结合协同过滤和基于内容的推荐算法,融入季节、评价等上下文信息,实现个性化推荐。
概念介绍
-
多模融合:多模融合是 seekdb 的一个重要能力。本文的多模融合主要指的是多模数据混合搜索技术。seekdb 支持向量数据、空间数据、文档数据、标量数据等类型融合查询,基于向量索引、空间索引、全文索引等多种索引的支持,提供更高性能的混合搜索能力。

-
LLM(Large Language Model):大语言模型。指使用大量文本数据训练的深度学习模型,可以生成自然语言文本或理解语言文本的含义。大语言模型可以处理多种自然语言任务,如文本分类、问答、对话等,是通向人工智能的重要途径。
前提条件
-
您已部署 seekdb。更多有关部署 seekdb 的信息,请参见 部署概述。
-
您已创建数据库。更多有关创建数据库的信息,请参见 创建数据库。
-
数据库已开启向量搜索功能。更多关于向量搜索功能的信息,请参见 使用 SQL 快速进行向量搜索。
obclient> ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30; -
(推荐,非必选)安装 Python 3.10 及以上版本 和相应 pip。如果您的机器上 Python 版本较低,可以使用 Miniconda 来创建新的 Python 3.10 及以上的环境,具体可参考 Miniconda 安装指南。
conda create -n obmms python=3.10 && conda activate obmms -
安装 Poetry,可参考命令:
python3 -m ensurepip
python3 -m pip install poetry -
安装相应的 Python 包。可参考命令:
pip install python-dotenv tqdm streamlit pyobvector==0.2.16
步骤一:获取 LLM API 密钥
注册阿里云百炼账号,开通模型服务并获取 API 密钥。




步骤二:获取地理服务 API 密钥
注册高德开放平台,并获取基础 LBS 服务 API 密钥。






步骤三:下载公开数据集
下载 Kaggle 的中国城市景点详情数据集 ZIP 压缩包。
步骤四:构建您的文旅小助手
克隆项目仓库
-
克隆最新的项目仓库。
git clone https://github.com/oceanbase-devhub/ob-multi-model-search-demo.git
cd ob-multi-model-search-demo -
将下载完毕的
archive数据集 ZIP 压缩包移动到ob-multi-model-search-demo项目文件夹中,重命名为citydata,并解压。# 请修改为 archive.zip 文件的实际保存路径
mv ./archive.zip ./citydata.zip
unzip ./citydata.zip
安装依赖
在项目根目录下,运行以下命令安装依赖。
poetry install
设置环境变量
在 .env 文件中设置环境变量:
vim .env
你需要将 OB_ 开头的变量更新为您的数据库连接信息,并手动增加以下变量:将 DASHSCOPE_API_KEY 更新为您从阿里云百炼控制台获取的 API KEY 值,将 AMAP_API_KEY 更新为您从高德地图 API 服务获取的 API KEY 值,然后保存文件。
# 数据库连接串中的主机地址
OB_URL="******" ## 格式:IP:<端口号>
OB_USER="******" ## 用户名
OB_DB_NAME="******" ## 数据库名称
# 数据库连接串中的密码
OB_PWD="******"
# 数 据库连接串中的 SSL CA 文件路径(可选),如果不需要使用 SSL 链路加密,需要删除此参数
OB_DB_SSL_CA_PATH="******"
# 手动增加 LLM API Key
DASHSCOPE_API_KEY="******"
# 手动增加高德地图 API Key
AMAP_API_KEY="******"
导入数据
在该步骤中,我们将下载的数据集中的数据导入到 seekdb 中。
注意
首次构建时,建议先选取数据集中的一部分(例如只选取首字母为 A 的景点)进行导入,全部导入会时间花费较长。
python ./obmms/data/attraction_data_preprocessor.py
出现以下运行进度,则表示数据正在成功导入。
...
./citydata/常德.csv:
100%|███████████████████████████████████████████████████████████████████████████| 100/100 [00:04<00:00, 20.77it/s]
./citydata/渭南.csv:
100%|█████████████████████████████████████████████████████████████████████████████| 90/90 [00:13<00:00, 6.54it/s]
...
启动 UI 聊天界面
执行以下命令启动聊天界面:
poetry run streamlit run ./ui.py
如无直接弹出网页,可访问终端中显示的 URL 来打开文旅小助手应用界面。
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://172.xxx.xxx.xxx:8501
External URL: http://172.xxx.xxx.xxx:8501
应用展示

故障排除
依赖包安装问题
Poetry 安装失败
如果 poetry install 命令失败,可以尝试以下步骤:
-
更新 Poetry 到最新版本:
pip install --upgrade poetry -
清除 Poetry 缓存:
poetry cache clear --all pypi -
重新安装依赖:
poetry install --no-cache
环境配置问题
Python 环境未激活
重要
确保您已经激活了正确的 Python 环境(如 obmms conda 环境)再进行依赖安装。
确保您已经激活了正确的 conda 环境:
conda activate obmms
Python 版本不兼容
确保使用 Python 3.10 及以上版本:
python --version
如果版本过低,请重新创建环境:
conda create -n obmms python=3.10
conda activate obmms
数据库连接问题
如果遇到数据库连接问题,请检查:
.env文件中的数据库连接信息是否正确- seekdb 是否正常运行
- 网络连接是否正常
- 数据库用户权限是否足够
其他常见问题
端口占用
如果 Streamlit 启动时提示端口被占用,可以指定其他端口:
poetry run streamlit run ./ui.py --server.port 8502
内存不足
如果数据导入过程中出现内存不足的问题,可以:
- 减少批量导入的数据量
- 增加系统内存
- 调整 seekdb 的内存配置
API 密钥问题
确保您已经正确配置了:
- 阿里云百炼 API 密钥(DASHSCOPE_API_KEY)
- 高德地图 API 密钥(AMAP_API_KEY)
API 密钥可以在 .env 文件中进行配置。