盘古大模型 PANGULARGEMODELS-Vector:向量库

时间:2024-09-05 14:59:04

向量库

向量库用于向量数据存储,提供向量数据检索能力。

  • 初始化,以使用华为 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()
  • CS S插件模式(内部已集成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个。

support.huaweicloud.com/ugobs-obs-pangulm/zh-cn_topic_0000001716597365.html