如何用 Docker 运行 OceanBase CE 并将其作为 CAMEL 向量存储接入智能体?

如何用 Docker 运行 OceanBase CE 并将其作为 CAMEL 向量存储接入智能体? 如何用 Docker 运行 OceanBase CE 并将其作为 CAMEL 向量存储接入智能体【免费下载链接】camel CAMEL: The first and the best multi-agent framework. Finding the Scaling Law of Agents. https://www.camel-ai.org项目地址: https://gitcode.com/GitHub_Trending/ca/camel这篇文章完成一个连续任务在本地用 Docker 跑起 OceanBase Community EditionCE4.3.5然后使用 CAMEL 的OceanBaseStorage把它作为持久化向量存储接入验证向量写入与相似度查询是否可用。OceanBase 是 MySQL 兼容的分布式数据库可通过 OceanBase Vector 提供向量能力CAMEL 的OceanBaseStorage基于pyobvector实现支持存储 embedding 元数据并执行 ANN 相似度搜索。准备条件本机已安装 Docker文档中的镜像拉取与运行命令均以 Docker 为前提。Python 环境需满足pyobvector的安装要求根据 pyproject.tomlpyobvector0.2.22仅在python_version 3.13时安装即该依赖目前仅支持 Python 3.13 以下版本。安装 CAMEL 的 RAG 依赖会一并引入pyobvector。如果本地已有源码检出安装可跳过此步。文档给出的安装命令为!pip install camel-ai[rag]0.2.85关于 extras 的说明可参考 安装文档ragextras 包含 Sentence Transformers、Qdrant、Milvus、TiDB、BM25、OceanBase、Weaviate、chroma 等依赖。用 Docker 运行 OceanBase CEOceanBase 提供官方镜像oceanbase/oceanbase-ce两个关键端口2881MySQL 兼容端点2886OceanBase dashboard / obshell。推荐设置环境变量OB_TENANT_PASSWORD。本地开发时MODESLIM会以轻量单节点模式快速启动。方式 A快速启动docker pull oceanbase/oceanbase-ce docker run -d --name oceanbase-ce \ -p 2881:2881 \ -p 2886:2886 \ -e MODESLIM \ -e OB_TENANT_PASSWORDTenantPassw0rd! \ oceanbase/oceanbase-ce # Watch logs until the service prints boot success! docker logs -f oceanbase-ce方式 B带持久化卷适合反复迭代开发可选该方式会把数据目录挂载到宿主机容器删除后数据仍保留。副作用是会在当前目录创建ob与ob-cluster两个目录后续数据落在其中mkdir -p ob ob-cluster docker run -d --name oceanbase-ce \ -p 2881:2881 \ -p 2886:2886 \ -e MODESLIM \ -e OB_TENANT_PASSWORDTenantPassw0rd! \ -v $PWD/ob:/root/ob \ -v $PWD/ob-cluster:/root/.obd/cluster \ oceanbase/oceanbase-ce启动成功的判定条件在日志中等待boot success!出现之后再进行 CAMEL 侧的存储操作。如果本机装有 MySQL 客户端文档给了一个可选的连通性检查用户名可用租户限定形式例如roottestmysql -h 127.0.0.1 -P 2881 -u roottest -p注意文档提醒具体的默认租户/用户可能随镜像版本和你的配置而变化。在 CAMEL 中创建并连接 OceanBaseStorageOceanBaseStorage把向量和元数据存在一张 OceanBase 表中如果表不存在会先建表并创建 HNSW 向量索引。关键参数见 camel/storages/vectordb_storages/oceanbase.pyvector_dimembedding 维度table_nameOceanBase 中的表名urihost:port本地 Docker 场景为127.0.0.1:2881user通常为租户限定的用户如roottestpassword用户密码db_name数据库名distance距离度量实现支持l2、cosine、inner_product、negative_inner_product默认l2。下面这段代码来自 cookbook连接参数通过环境变量提供括号内为文档给出的默认值不设置环境变量即可按默认值直接运行import os import random from camel.storages import OceanBaseStorage, VectorDBQuery, VectorRecord # Connection settings for local Docker OB_URI os.environ.get(OB_URI, 127.0.0.1:2881) OB_USER os.environ.get(OB_USER, roottest) OB_PASSWORD os.environ.get(OB_PASSWORD, TenantPassw0rd!) OB_DB_NAME os.environ.get(OB_DB_NAME, test) TABLE_NAME os.environ.get(OB_TABLE_NAME, camel_oceanbase_vectors) VECTOR_DIM int(os.environ.get(VECTOR_DIM, 4)) storage OceanBaseStorage( vector_dimVECTOR_DIM, table_nameTABLE_NAME, uriOB_URI, userOB_USER, passwordOB_PASSWORD, db_nameOB_DB_NAME, distancecosine, ) print(storage.status())status()返回VectorDBStatus包含vector_dim与vector_count表内记录数是贯穿下文验证步骤的检查手段。写入、查询与清理并核对结果下面这组操作用随机向量做连通性验证不依赖任何 embedding 模型。向量维度要与建表时的VECTOR_DIM一致否则add会抛出ValueError。写入 200 条记录并核对数量batch_size100为每批插入条数random.seed(20260131) records [] for i in range(200): records.append( VectorRecord( vector[random.uniform(-1, 1) for _ in range(VECTOR_DIM)], payload{doc_id: fdoc-{i}, source: sanity-check}, ) ) storage.add(recordsrecords, batch_size100) print(storage.status())此时status()输出的vector_count应为 200。用随机向量做相似度查询取top_k5query_vector [random.uniform(-1, 1) for _ in range(VECTOR_DIM)] results storage.query(VectorDBQuery(query_vectorquery_vector, top_k5)) for r in results: print({id: r.record.id, similarity: r.similarity, payload: r.record.payload})返回的每条结果包含id、similarity由距离转换得到的相似度分数和payload写入时的元数据如doc_id。如果这里能打印出 5 条带有doc-*元数据的结果说明写入与 ANN 查询链路已经打通。清理破坏性操作会清空整张表的所有记录请确认表内没有需要保留的数据# Clean up the table contents (destructive) storage.clear() print(storage.status())执行后status()的vector_count应回到 0。已知限制与边界HNSW 索引参数是固定的当前 CAMEL 实现在首次建表时以m16、ef_construction256创建 HNSW 索引。文档明确说明如果需要不同的 HNSW 参数必须修改或扩展 OceanBaseStorage 实现当前 API 不暴露这些参数。用户与租户cookbook 默认使用roottest而 storages 模块文档 中的示例使用rootsys。两者都是文档给出的连接示例默认租户/用户随镜像版本和配置变化连不上时先核对实际租户名。距离度量cookbook 示例使用distancecosine实现层面还支持l2默认、inner_product、negative_inner_product查询时会自动映射到 OceanBase 对应的距离函数。索引调优方面文档按数据规模给出了方向性建议小集合 100k 向量保持中等建索引设置、必要时加大查询期搜索宽度中等集合约 100k–5M先测 P95/P99 延迟与 recall达不到目标再提高建索引设置并重建大集合5M需规划内存与重建时间可考虑按租户/语料/时间分片。完整内容见 cookbook。完成以上步骤后你就拥有一个可持久化、可查询的 OceanBase 向量存储storage对象可以直接作为 CAMEL RAG 流程中的向量存储使用。【免费下载链接】camel CAMEL: The first and the best multi-agent framework. Finding the Scaling Law of Agents. https://www.camel-ai.org项目地址: https://gitcode.com/GitHub_Trending/ca/camel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考