昇腾社区首页
中文
注册

类功能

功能描述

提供向量数据库。

函数原型

from mx_rag.storage.vectorstore import OpenGaussDB
OpenGaussDB(engine, collection_name, search_mode, index_type, metric_type)

参数说明

参数名

数据类型

可选/必选

说明

engine

Engine

必选

Engine实例。

说明:

Engine由用户控制传入,请使用安全的连接方式。

collection_name

str

可选

集合名称,不能为空,最大长度为1024,默认为“vectorstore”

search_mode

SearchMode

可选

检索模式,当前支持三种模式,包括稠密检索(DENSE),稀疏检索(SPARSE)和混合检索(HYBRID)。

类型介绍可参见SearchMode

index_type

str

可选

向量检索类型,当前支持IVFFLAT,HNSW,默认为HNSW,该字段稠密检索和混合检索模式时,针对稠密向量有效。稀疏向量检索类型为HNSW,不支持配置。

metric_type

str

可选

向量距离计算方式,支持IP,L2,COSINE,默认为IP。

返回类型

数据类型

说明

OpenGaussDB

OpenGaussDB对象。

调用示例

import numpy as np
from mx_rag.storage.vectorstore import OpenGaussDB, SearchMode
from sqlalchemy import URL, create_engine

# OpenGauss
username = "demo"
password = "<password here>"
host = "<host here>"
port = "<port here>"
database = "testdb"

# vector config
dim = 128 
n_emb = 1000

url = URL.create(
   "opengauss+psycopg2",
   username=username,
   password=password,
   host=host,
   port=port,
   database=database
)
print(url)
# create an engine
engine = create_engine(url, pool_size=20, max_overflow=10, pool_pre_ping=True) 
# search mode defaults to DENSE
# similarity strategy defaults to FLAT_IP
dense_store = OpenGaussDB.create(
    engine=engine,
    dense_dim=dim
)

# add vectors
dense_embeddings = np.random.randn(n_emb, dim)
ids = list(range(n_emb))
dense_store.add(ids, dense_embeddings)

# search vectors
res = dense_store.search(dense_embeddings[:3].tolist(), k=3)
print(res)

# delete vectors
count = dense_store.delete(ids)
print(count)

# update vector
dense_store.update([1], dense_embeddings[:1])

# drop table
dense_store.drop_collection()