新建 CollectionView

最近更新时间:2024-09-27 18:00:11

我的收藏

接口定义

create_collection_view() 用于为已创建的 AI 类向量数据库创建 CollectionView。
def create_collection_view( name: str, description: str = '', embedding: Embedding | None = None, splitter_process: SplitterProcess | None = None, index: Index | None = None, timeout: float | None = None, expected_file_num: int | None = None, average_file_size: int | None = None, shard: int | None = None, replicas: int | None = None ) -> CollectionView

请求示例

在 AI 类数据库 db-test-ai 下,创建一个名为 coll-ai-files 的集合视图,用于上传并存储文件。
import tcvectordb
from tcvectordb.model.ai_database import AIDatabase
from tcvectordb.model.enum import FieldType, IndexType, ReadConsistency
from tcvectordb.model.index import Index, FilterIndex
from tcvectordb.model.collection_view import Embedding, SplitterProcess, Language, CollectionView

#create a database client object
client = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X:80', username='root', key='eC4bLRy2va******************************', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)

db = client.database('db-test-ai')
# create a collection
# 配置文件 Meta 信息,构建为 Filter 索引
index = Index()
index.add(FilterIndex('author', FieldType.String, IndexType.FILTER))
index.add(FilterIndex('tags', FieldType.Array, IndexType.FILTER))
# 创建集合,文件预处理相关参数
# 1. Embedding:语言类型、是否开启词(Words)向量精排
# 2、splitter_process:拆分时,是否需要追加 Title 或 keywords
# 3、Index:为文件 meta 信息的标量字段设置 Filter 索引
coll_view = db.create_collection_view(name='coll-ai-files',
description='this is a collection description',
index=index,
embedding=Embedding(
language=Language.ZH.value,
enable_words_embedding=True,
),
splitter_process=SplitterProcess(
append_title_to_chunk=True,
append_keywords_to_chunk=True,
# chunk_splitter 参数以正则表达式的方式配置文档拆分方式,如下:\\n{2,} 代表以两个及以上的换行进行拆分,常用在QA对文件拆分中。
# chunk_splitter="\\n{2,}"
),
timeout=100)
print(vars(coll_view))

入参描述

参数
参数含义
子参数
是否必选
配置方法
name
指定 CollectionView 的名称。
-
CollectionView 命名要求如下:
只能使用英文字母,数字,下划线_、中划线-,并以英文字母开头。
长度要求:[1,128]。
description
指定 CollectionView 的描述信息
-
取值类型:string。
字符长度要求:[1,256]。
示例:this is the collection description。
embedding
Embedding 相关配置
language
取值如下所示:
ZH:中文
EN:英文
MULTI:多语言
enable_words_embedding
配置在检索时,是否开启词(Words)向量精排,并进行词向量化。
True:开启。
False:不开启,默认为 False。
splitter_process
文件预处理方式配置
append_title_to_chunk
在对文件拆分时,配置是否将 Title 追加到切分后的段落后面一并 Embedding。取值如下所示:
True:将段落 Title 追加到切分后的段落。
False:不追加。默认值为 False。
append_keywords_to_chunk
在对文件拆分时,配置是否将关键字 keywords 追加到切分后的段落一并 Embedding。取值如下所示:
True:将全文的 keywords 追加到切分后的段落。默认值为 True。
False:不追加。
chunk_splitter
以正则表达式的方式配置文档拆分方式,如下:\\n{2,} 代表以两个及以上的换行进行拆分,常用在 QA 对文件拆分中。
index
配置需使用 Filter 索引的标量字段,以便使用该字段的 Filter 条件表达式过滤查找文件。


fieldName
配置可作为 Filter 索引的自定义扩展的标量字段名。
说明:
Filter 索引(Filter Index)是建立在标量字段的索引。该标量字段名称、类型均由用户自定义,不限制标量字段数量。
标量字段被建立 Filter 索引之后,向量检索时,将依据 Filter 指定的标量字段的条件表达式进行过滤查询和范围查询以此来匹配相似向量。
建立 Filter 索引时,选取文件 Metadata 信息需要使用 Filter 表达式高效过滤数据的标量字段。不做过滤查询、检索的标量字段不必建立 Filter 索引。切勿将所有标量字段建立索引,导致内存资源的浪费。
FieldType
指定自定义字段的数据类型。取值如下:
String:字符型。
Uint64:指无符号整数(unsigned integer)。
Array:数组类型,默认数组元素为 string。
IndexType
该参数固定设置为 FILTER

出参描述

{
"database": "db-test-ai",
"collectionView": "coll-ai-files-sdk",
"description": "this is a collection description",
"embedding": {
"language": "zh",
"enableWordsEmbedding": true
},
"splitterPreprocess": {
"appendTitleToChunk": true,
"appendKeywordsToChunk": true
},
"indexes": [
{
"fieldName": "tags",
"fieldType": "array",
"indexType": "filter"
},
{
"fieldName": "author",
"fieldType": "string",
"indexType": "filter"
}
]
}