配置Vector(Python SDK)
Embedding
Emebedding模块用于对Emebedding模型API的适配封装,提供统一的接口快速地调用CSS等模型emebedding能力。
- 初始化:根据相应模型定义Emebedding类,如使用华为CSS Embedding为:Embeddings.of("css");。
from pangukitsappdev.api.embeddings.factory import Embeddings # 初始化 Css Embedding embedding_api = Embeddings.of("css")
- embedding单文本:把单个字符串转换为向量数据。(向量维度由模型确定)。
text = "this is a test text." # embed query. embedding = embedding_api.embed_query(text) print(embedding)
- embedding批量文档:把文档批量转换为向量数据。
text = "this is a test text." # embed documents. embeddings = embedding_api.embed_documents([text]) print(embeddings)
Splitter
文档拆分解析,提供对文档数据进行拆分解析能力,支持pdf/doc/docx/ppt/pptx/xls/xlsx/png/jpg/jpeg/bmp/gif/tiff/webp/pcx/ico/psd等格式文档。
- 初始化
根据相应解析接口定义DocSplit类,以使用华为Pangu DocSplit为例。
其中,filePath指的是需要解析的文档路径;mode为分割解析模式,具体定义如下:
0 - 返回文档的原始段落,不做其他处理。
1 - 根据标注的书签或目录分段,一般适合有层级标签的word文档。
2 - 根据内容里的章节条分段,适合制度类文档。
3 - 根据长度分段,默认按照500字拆分,会尽量保留完整句子。
from pangukitsappdev.api.doc_split.factory import DocSplits from pangukitsappdev.api.doc_split.split_config import SplitConfig split_config = SplitConfig() split_config.file_path='/data/xxx.docx' split_api = DocSplits.of("pangu-doc", split_config)
- 文档解析
doc_list = split_api.load() for doc in doc_list: print(doc.page_content)
向量库
向量库用于向量数据存储,提供向量数据检索能力。
- 初始化,以使用华为CSS示例。
from pangukitsappdev.api.memory.vector.factory import Vectors from pangukitsappdev.api.memory.vector.vector_config import VectorStoreConfig, ServerInfoCss from pangukitsappdev.api.embeddings.factory import Embeddings vector_store_config = VectorStoreConfig(store_name="css", index_name="your_index_name", embedding=Embeddings.of("css"), text_key="name", vector_fields=["description"], distance_strategy="inner_product", server_info=ServerInfoCss(env_prefix="sdk.memory.css")) vector_api = Vectors.of("css", vector_store_config)
- 数据入库
from pangukitsappdev.vectorstores.bulk_data import BulkData bulk_list = [BulkData(id="1", data={"name": "名称name1", "description": "foo"}), BulkData(id="2", data={"name": "名称name2", "description": "bar"}), BulkData(id="3", data={"name": "名称name3", "description": "baz"})] ] vector_api.add_docs(bulk_list)
- 数据检索
docs = vector_api.similarity_search("bar", top_k=2)
- 数据清理
vector_api.clear()
- CSS插件模式(内部已集成Embedding, 支持多字段组合向量检索)。
CSS插件模式,需要提前手工创建索引(因索引中需要指定embdding/rank模型,SDK不能简单自动创建)。
CSS插件模式,不支持clear删除索引接口(索引外部创建,应由外部删除)。
vector_store_config = VectorStoreConfig(store_name="css", index_name="your_index_name", text_key="name", vector_fields=["name", "description"], server_info=ServerInfoCss(env_prefix="sdk.memory.css")) vector_api = Vectors.of("css", vector_store_config) # 检索 docs = vector_api.similarity_search("bar", top_k=2) # 添加 bulk_list = [BulkData(id="1", data={"name": "名称name1", "description": "foo"}), BulkData(id="2", data={"name": "名称name2", "description": "bar"}), BulkData(id="3", data={"name": "名称name3", "description": "baz"})] ] vector_api.add_docs(bulk_list)
通过vectorStoreConfig判断使用CSS的插件模式和非插件模式。如果配置了embedding模型,则使用非插件模式,否则使用插件模式。注意,在非插件模式下,vectorFields有且只有1个。