Workshop 的第一个环节是基础环境配置。现场为了规避 Wi-Fi 网络高并发可能带来的延迟,我们为每位参会者都准备了阿里云 ECS 云服务器作为实验环境。以下是本地电脑(Mac/Windows)详细安装流程(以 CLI 为主):
- Docker (用于三个实验)
Mac: 下载 Docker Desktop 并安装。
Windows: 同样下载 Docker Desktop,需开启 WSL2,安装后启动 Docker 应用。 - Python 3.10+ (用于三个实验)
下载 Python 官方安装包 进行安装。
安装完成后检查:
python --version # 应输出 3.10 或更高
- uv (Python 包管理器)
pip install uv
- seekdb (用于三个实验)
# 获取docker 镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/oceanbase/seekdb:latest
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/oceanbase/seekdb:latest docker.io/oceanbase/seekdb:latest
# arm机器
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/oceanbase/seekdb:latest-linuxarm64
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/oceanbase/seekdb:latest-linuxarm64 docker.io/oceanbase/seekdb:latest
# 方式一: docker 方式安装
docker run -d \
--name seekdb \
-p 2881:2881 \
-v ./data:/var/lib/oceanbase/store \
oceanbase/seekdb:latest
- Jupyter(用于实验一)
pip install jupyter
PPT 内容
2025年度发布会 OceanBase x LangChain.pdf (16.3 MB)
详细步骤
第一阶段:构建向量知识库 (Notebook 01)
这一阶段的核心是将静态文档转化为可检索的向量数据。
1. 环境连接与模型配置
- 配置连接 :加载环境变量,读取 OceanBase 的连接信息(Host, Port, Database)以及模型服务商(SiliconFlow)的配置。
-
加载模型 :初始化 Embedding 模型,本次实验使用
BAAI/bge-m3,用于将文本转换为高维向量。
2. 文档加载 (Document Loading)
-
操作 :使用 LangChain 的
PyPDFLoader加载本地文件data/nke-10k-2023.pdf(Nike 2023 年 10-K 年报)。
3. 文本切分 (Text Splitting)
为了适应模型的上下文窗口限制并提高检索的精确度,需要对长文档进行切分。
-
工具 :使用
RecursiveCharacterTextSplitter。 -
参数设置 :
-
chunk_size=1000:每个文本块大小约为 1000 字符。 -
chunk_overlap=100:块与块之间保留 100 字符重叠,保证上下文语义连贯。
-
4. 向量化与存储 (Embedding & Storage)
这是利用 OceanBase seekdb 核心能力的关键步骤。
-
初始化存储 :创建
OceanbaseVectorStore实例。 -
配置参数 :
-
table_name="langchain_knowledge_base":指定 OceanBase 中的存储表名。 -
index_type="HNSW":指定使用 HNSW 索引算法,以支持高性能的近似最近邻搜索。 -
vidx_metric_type="cosine":使用余弦相似度作为距离度量。
-
-
执行入库 :调用
add_documents方法。系统自动调用 Embedding 模型生成向量,并将文本、元数据及向量并发写入 OceanBase。实验中采用了分批处理(Batch Size = 50)以确保存储过程的稳定性。
第二阶段:构建 Agentic RAG (Notebook 02)
这一阶段利用 LangChain v1 将知识库升级为能够自主思考的智能体。
1. 定义检索工具 (Create Tool)
Agent 无法直接访问数据库,必须通过“工具”进行交互。
-
定义函数 :创建一个名为
search_knowledge_base的 Python 函数。 -
逻辑实现 :函数内部调用第一阶段创建的向量存储实例,执行
similarity_search(相似度搜索)并返回结果。 -
工具描述 :通过
@tool装饰器和 Docstring(文档字符串)明确告知 Agent:“当需要查找 Nike 的财务、战略、风险或细分市场信息时使用此工具”。这是 Agent 能够正确调用工具的基础。
2. 初始化智能体 (Create Agent via LangChain v1)
使用 LangChain v1 的新标准接口构建 Agent。
-
模型 :使用
Qwen系列大模型作为推理核心。 -
构建接口 :使用
create_agent函数。 - 系统提示词 (System Prompt) :设定 Agent 的人设——“你是一个拥有 Nike 年报访问权限的 AI 助手。对于需要事实数据的问题,请使用检索工具;对于简单问题,请直接回答。”。
积分悬赏课后题,最先截图附上结果的小伙伴,每人送积分30分。
- 问题 :“Nike 2023 财年的总营收和营业利润是多少?”
-
Agent 行为 :Agent 分析后认为这是具体财务数据,自主决定调用
search_knowledge_base工具。