getOrCreateCollection - 创建或查询 Collection
getOrCreateCollection() 用于创建或者查询 Collection,如果数据库中 Collection 不存在,则创建;如果存在 Collection,则获取相应的结果。
仅支持在使用 SeekdbClient 连接时,才能使用该接口。关于 SeekdbClient 的详细介绍,参见 SeekdbClient。
前提条件
-
您已经安装了 seekdb-js,有关安装 seekdb-js 的详细信息,参见 快速开始。
-
您已经安装了 seekdb 服务器模式,有关安装 seekdb 服务器模式的详细信息,参见 通过 yum install 部署 seekdb。
-
您已经连接到数据库。有关连接的详细操作参见 SeekdbClient。
-
请确保连接的用户具备
CREATE权限。查看当前用户权限的相关操作请参见 查看用户权限。如果不具备该权限,请联系管理员为您授权,用户授权的相关操作请参见 直接授予权限。
定义表名
创建表时,需要先为表命名,以下是定义表名时需要遵循的要求:
-
在 seekdb 中,每个表的名称必须保证在数据库内唯一。
-
表名称支持超过 64 字符,少于 512 字符。
-
建议给表起一个有意义的名字,不要使用 t1、table1 这样的表名。更多表命名规范信息,请参见 表命名规范。
请求参数
getOrCreateCollection(options: CreateCollectionOptions)
| 参数 | 取值类型 | 是否必选 | 描述 | 取值示例 |
|---|---|---|---|---|
name | string | 必选 | 指定要创建的 Collection 的名称。 | my_collection |
configuration | Configuration | HNSWConfiguration | 可选 | 集合配置,其中 Configuration 包含 HNSWConfiguration 和 FulltextAnalyzerConfig 2 个属性 | {hnsw: {dimension: 384, distance: 'cosine'}, fulltextConfig: {analyzer: 'ik', ik_mode: 'smart'}} |
embeddingFunction | EmbeddingFunction | null | 可选 | 嵌入函数,用于将文本转换为向量。传入 null 表示不使用嵌入函数 | DefaultEmbeddingFunction() |
HNSWConfiguration 参数如下:
| 参数 | 取值类型 | 是否必选 | 描述 | 取值示例 |
|---|---|---|---|---|
dimension | number | 可选 | 向量维度(如果提供了 embeddingFunction,会自动从其推断) | dimension: 384,distance: 'cosine' |
distance | DistanceMetric | 可选 | 距离度量方式:'l2'(欧氏距离)、'cosine'(余弦相似度)、'inner_product'(内积) | HNSWConfiguration(dimension=384, distance='cosine') |
-
当提供
embeddingFunction时,系统将通过调用该函数自动计算向量维数。如果还提供了configuration.dimension,则它必须与embeddingFunction的维度匹配,否则将引发 ValueError。 -
embeddingFunction(EmbeddingFunction, 可选): 将文档转换为向量的函数。如果提供,维度将自动计算并与configuration.dimension验证。
请求示例
import { SeekdbClient } from "seekdb";
// 1. Connect
const client = new SeekdbClient({
host: "127.0.0.1",
port: 2881,
user: "root",
password: "",
database: "test",
});
// 如果集合存在则获取,不存在则创建
const collection = await client.getOrCreateCollection({
name: 'my_collection',
configuration: {
dimension: 768,
distance: 'cosine'
}
});
返回参数
无