向量存储(VectorStore)API 用于管理向量数据库连接配置。支持 Elasticsearch、PostgreSQL、Qdrant、Milvus、Weaviate、SQLite 六种引擎类型。
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /vector-stores/types |
获取支持的引擎类型及配置字段 |
| POST | /vector-stores/test |
使用原始凭据测试连接(不保存) |
| POST | /vector-stores |
创建向量存储 |
| GET | /vector-stores |
获取向量存储列表 |
| GET | /vector-stores/:id |
获取向量存储详情 |
| PUT | /vector-stores/:id |
更新向量存储(仅名称可修改) |
| DELETE | /vector-stores/:id |
删除向量存储(软删除) |
| POST | /vector-stores/:id/test |
测试已保存的向量存储连接 |
返回所有支持的引擎类型,包含连接配置和索引配置的字段定义,可用于前端表单生成。
请求:
curl --location 'http://localhost:8080/api/v1/vector-stores/types' \
--header 'X-API-Key: sk-xxxxx'
响应:
{
"success": true,
"data": [
{
"type": "elasticsearch",
"display_name": "Elasticsearch (Keywords + Vector)",
"connection_fields": [
{"name": "addr", "type": "string", "required": true, "description": "Elasticsearch URL (e.g., http://localhost:9200)"},
{"name": "username", "type": "string", "required": false},
{"name": "password", "type": "string", "required": false, "sensitive": true}
],
"index_fields": [
{"name": "index_name", "type": "string", "required": false, "default": "xwrag_default"},
{"name": "number_of_shards", "type": "number", "required": false},
{"name": "number_of_replicas", "type": "number", "required": false}
]
},
{
"type": "postgres",
"display_name": "PostgreSQL (Keywords + Vector)",
"connection_fields": [
{"name": "use_default_connection", "type": "boolean", "required": false, "default": true, "description": "Use the application's default database connection"},
{"name": "addr", "type": "string", "required": false, "description": "PostgreSQL connection string (required if use_default_connection is false)"},
{"name": "username", "type": "string", "required": false},
{"name": "password", "type": "string", "required": false, "sensitive": true}
]
}
]
}使用提供的凭据执行连接测试,不保存任何数据。成功时返回自动检测到的服务器版本。
请求:
curl --location 'http://localhost:8080/api/v1/vector-stores/test' \
--header 'X-API-Key: sk-xxxxx' \
--header 'Content-Type: application/json' \
--data '{
"engine_type": "elasticsearch",
"connection_config": {
"addr": "http://es:9200",
"username": "elastic",
"password": "changeme"
}
}'
响应(成功):
{
"success": true,
"version": "7.10.1"
}
version字段包含自动检测到的服务器版本。如果无法检测(如 Milvus、SQLite),则为空字符串。
响应(失败):
{
"success": false,
"error": "failed to connect to elasticsearch: connection refused or authentication failed"
}创建一个新的向量存储配置。同一 endpoint + index 组合不允许重复注册(包括环境变量配置的存储)。
请求:
curl --location 'http://localhost:8080/api/v1/vector-stores' \
--header 'X-API-Key: sk-xxxxx' \
--header 'Content-Type: application/json' \
--data '{
"name": "elasticsearch-hot",
"engine_type": "elasticsearch",
"connection_config": {
"addr": "http://es-hot:9200",
"username": "elastic",
"password": "changeme"
},
"index_config": {
"index_name": "my_index"
}
}'
响应 (201):
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "elasticsearch-hot",
"engine_type": "elasticsearch",
"connection_config": {
"addr": "http://es-hot:9200",
"username": "elastic",
"password": "***"
},
"index_config": {
"index_name": "my_index"
},
"source": "user",
"readonly": false,
"created_at": "2026-04-07T10:00:00Z",
"updated_at": "2026-04-07T10:00:00Z"
}
}注意: 响应中的敏感字段(
password、api_key)会被掩码为"***"。connection_config.version字段在连接测试成功后自动填充(如"7.10.1"),创建时为空。
返回当前租户的所有向量存储,包含环境变量配置的存储(source: "env")和用户创建的存储(source: "user")。环境变量存储排列在前。
请求:
curl --location 'http://localhost:8080/api/v1/vector-stores' \
--header 'X-API-Key: sk-xxxxx'
响应:
{
"success": true,
"data": [
{
"id": "__env_postgres__",
"name": "postgres (env)",
"engine_type": "postgres",
"connection_config": {
"use_default_connection": true
},
"source": "env",
"readonly": true
},
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "elasticsearch-hot",
"engine_type": "elasticsearch",
"connection_config": {
"addr": "http://es-hot:9200",
"username": "elastic",
"password": "***"
},
"source": "user",
"readonly": false
}
]
}根据 ID 获取单个向量存储详情。支持 __env_* 格式的环境变量存储 ID。
请求:
curl --location 'http://localhost:8080/api/v1/vector-stores/550e8400-e29b-41d4-a716-446655440000' \
--header 'X-API-Key: sk-xxxxx'
响应:
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "elasticsearch-hot",
"engine_type": "elasticsearch",
"connection_config": {
"addr": "http://es-hot:9200",
"username": "elastic",
"password": "***",
"version": "7.10.1"
},
"index_config": {
"index_name": "my_index"
},
"source": "user",
"readonly": false,
"created_at": "2026-04-07T10:00:00Z",
"updated_at": "2026-04-07T10:00:00Z"
}
}更新向量存储的名称。engine_type、connection_config、index_config 创建后不可变更。环境变量存储不可修改(返回 400)。
请求:
curl --location --request PUT 'http://localhost:8080/api/v1/vector-stores/550e8400-e29b-41d4-a716-446655440000' \
--header 'X-API-Key: sk-xxxxx' \
--header 'Content-Type: application/json' \
--data '{
"name": "elasticsearch-hot-renamed"
}'
响应:
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "elasticsearch-hot-renamed",
"engine_type": "elasticsearch",
"connection_config": {
"addr": "http://es-hot:9200",
"username": "elastic",
"password": "***"
},
"index_config": {
"index_name": "my_index"
},
"source": "user",
"readonly": false,
"created_at": "2026-04-07T10:00:00Z",
"updated_at": "2026-04-07T10:05:00Z"
}
}软删除向量存储。环境变量存储不可删除(返回 400)。
请求:
curl --location --request DELETE 'http://localhost:8080/api/v1/vector-stores/550e8400-e29b-41d4-a716-446655440000' \
--header 'X-API-Key: sk-xxxxx'
响应:
{
"success": true
}对已保存的向量存储或环境变量存储执行连接测试。成功时返回检测到的服务器版本,并自动更新存储记录中的 connection_config.version 字段。
请求:
curl --location --request POST 'http://localhost:8080/api/v1/vector-stores/550e8400-e29b-41d4-a716-446655440000/test' \
--header 'X-API-Key: sk-xxxxx'
响应(成功):
{
"success": true,
"version": "7.10.1"
}对于已保存的存储(非环境变量存储),检测到的版本会自动保存到
connection_config.version中。
响应(失败):
{
"success": false,
"error": "failed to connect to elasticsearch: connection refused or authentication failed"
}通过 RETRIEVE_DRIVER 环境变量配置的向量存储以虚拟条目形式出现在列表中。这些条目的特征:
- ID 格式:
__env_{driver}__(如__env_postgres__、__env_elasticsearch_v8__) - source:
"env" - readonly:
true - 不可修改/删除: PUT 和 DELETE 返回 400
- 可测试连接: POST
/:id/test正常工作
| HTTP 状态码 | 含义 |
|---|---|
| 400 | 请求参数错误、验证失败、尝试修改环境变量存储 |
| 401 | 未认证 |
| 404 | 向量存储不存在 |
| 409 | 同一 endpoint + index 组合已存在 |
| 500 | 内部服务器错误 |