Superduper
Superduper 是一个用于构建灵活、组合式 AI 应用程序的框架,这些应用程序可以使用声明式编程模型直接应用于数据库。这些应用程序声明并维护数据库的期望状态,并直接使用数据库来存储 AI 组件的输出、组件的元数据以及与系统状态相关的数据。
Qdrant 在 Superduper 中作为向量搜索提供商可用。
安装
pip install superduper-framework
设置
- 要将 Qdrant 用作向量搜索层,请创建包含以下配置的
settings.yaml
文件。
settings.yaml
cluster:
vector_search:
type: qdrant
vector_search_kwargs:
url: "http://localhost:6333"
api_key: "<YOUR_API_KEY>
# Supports all parameters of qdrant_client.QdrantClient
- 将
SUPERDUPER_CONFIG
环境变量值设置为配置文件的路径。
export SUPERDUPER_CONFIG=path/to/settings.yaml
就是这样。您现在可以使用由 Qdrant 支持的 Superduper。
示例
以下是使用配置的 Qdrant 索引运行向量搜索的示例。
import json
import requests
from superduper import superduper, Document
from superduper.ext.sentence_transformers import SentenceTransformer
r = requests.get('https://superduperdb-public-demo.s3.amazonaws.com/text.json')
with open('text.json', 'wb') as f:
f.write(r.content)
with open('text.json', 'r') as f:
data = json.load(f)
db = superduper('mongomock://test')
_ = db['documents'].insert_many([Document({'txt': txt}) for txt in data]).execute()
model = SentenceTransformer(
identifier="test",
predict_kwargs={"show_progress_bar": True},
model="all-MiniLM-L6-v2",
device="cpu",
postprocess=lambda x: x.tolist(),
)
vector_index = model.to_vector_index(select=db['documents'].find(), key='txt')
db.apply(vector_index)
query = db['documents'].like({'txt': 'Tell me about vector-search'}, vector_index=vector_index.identifier, n=3).find()
cursor = query.execute()
for r in cursor:
print('=' * 100)
print(r.unpack()['txt'])
print('=' * 100)