ArcadeDB
ArcadeDB 是一款多模型 NoSQL 数据库,支持图、文档、键值、时序和向量数据。它提供内置的 LSM_VECTOR 索引(由 JVector/HNSW 驱动),用于高性能近似最近邻(ANN)向量搜索。
langchain4j 集成支持两种运行模式:
- 远程模式 — 通过 HTTP 连接到 ArcadeDB 服务器。适合生产部署和共享基础设施。
- 嵌入模式 — 在同一 JVM 内以进程内方式运行 ArcadeDB。无需服务器或 Docker 容器;数据库存储在本地文件系统上。适合测试、桌面应用或单进程工作负载。
Maven 依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-arcadedb</artifactId>
<version>${latest version here}</version>
</dependency>
注意:这是一个社区集成模块。你可能需要将 langchain4j-community 仓库添加到项目配置中。
API
ArcadeDBEmbeddingStore
功能
- 两种运行模式:远程(通过 HTTP 客户端连接 ArcadeDB 服务器)或嵌入(ArcadeDB 在进程内运行,无需服务器)
- 多模型数据库:将 embedding 作为顶点存储在 ArcadeDB 的图模型中,可与文档、键值和时序数据并存
- HNSW 向量索引:使用 ArcadeDB 的 LSM_VECTOR 索引(基于 JVector)进行快速近似最近邻搜索
- 元数据过滤:支持使用比较和逻辑运算符按元数据过滤搜索结果
- 持久化存储:远程和嵌入模式下数据在重启后均保持持久
- 自动创建模式:首次使用时自动创建顶点类型、属性和向量索引
- 多种相似度函数:支持 COSINE(默认)、EUCLIDEAN 和 SQUARED_EUCLIDEAN 距离度量(远程模式)
- 批量操作:单次调用添加多个 embedding
- 灵活删除:按 ID、按过滤条件删除 embedding,或清空全部
基本用法
远程模式
远程模式连接到正在运行的 ArcadeDB 服务器。参见 使用 Docker 运行 ArcadeDB 在本地启动一台。
连接到已有数据库
EmbeddingStore<TextSegment> embeddingStore = ArcadeDBEmbeddingStore.builder()
.host("localhost")
.port(2480)
.databaseName("my_database")
.username("root")
.password("playwithdata")
.dimension(384) // Must match your embedding model's dimension
.build();
自动创建数据库
EmbeddingStore<TextSegment> embeddingStore = ArcadeDBEmbeddingStore.builder()
.host("localhost")
.port(2480)
.databaseName("my_database")
.username("root")
.password("playwithdata")
.dimension(384)
.createDatabase(true) // Create database if it doesn't exist
.build();
嵌入模式
嵌入模式在同一 JVM 内运行 ArcadeDB。无需服务器 — 只需提供本地文件系统上用于存储数据库的路径。如果数据库尚不存在,会自动创建。
使用完毕后请始终调用 close() 以释放资源。
ArcadeDBEmbeddingStore embeddingStore = ArcadeDBEmbeddingStore.embeddedBuilder()
.databasePath("/path/to/my-database")
.dimension(384) // Must match your embedding model's dimension
.build();
// ... use the store ...
embeddingStore.close();