OpenAI
Qdrant 支持使用 OpenAI 嵌入。
有一个官方的 OpenAI Python 包,它简化了获取它们的过程,并且可以使用 pip 安装
pip install openai
设置 OpenAI 和 Qdrant 客户端
import openai
import qdrant_client
openai_client = openai.Client(
api_key="<YOUR_API_KEY>"
)
client = qdrant_client.QdrantClient(":memory:")
texts = [
"Qdrant is the best vector search engine!",
"Loved by Enterprises and everyone building for low latency, high performance, and scale.",
]
以下示例展示了如何使用 text-embedding-3-small
模型嵌入文档,该模型生成大小为 1536 的句子嵌入。您可以在 此处 找到所有支持模型的列表。
嵌入文档
embedding_model = "text-embedding-3-small"
result = openai_client.embeddings.create(input=texts, model=embedding_model)
将模型输出转换为 Qdrant 点
from qdrant_client.models import PointStruct
points = [
PointStruct(
id=idx,
vector=data.embedding,
payload={"text": text},
)
for idx, (data, text) in enumerate(zip(result.data, texts))
]
创建一个集合用于插入文档
from qdrant_client.models import VectorParams, Distance
collection_name = "example_collection"
client.create_collection(
collection_name,
vectors_config=VectorParams(
size=1536,
distance=Distance.COSINE,
),
)
client.upsert(collection_name, points)
使用 Qdrant 搜索文档
文档索引完成后,您可以使用相同的模型搜索最相关的文档。
client.search(
collection_name=collection_name,
query_vector=openai_client.embeddings.create(
input=["What is the best to use for vector search scaling?"],
model=embedding_model,
)
.data[0]
.embedding,
)
结合使用 OpenAI 嵌入模型与 Qdrant 的二进制量化
您可以结合使用 OpenAI 嵌入模型与 二进制量化——这是一种可以将嵌入大小减少 32 倍,同时不过多损失搜索结果质量的技术。
方法 | 维度 | 测试数据集 | 召回率 | 过采样 |
---|---|---|---|---|
OpenAI text-embedding-3-large | 3072 | DBpedia 1M | 0.9966 | 3x |
OpenAI text-embedding-3-small | 1536 | DBpedia 100K | 0.9847 | 3x |
OpenAI text-embedding-3-large | 1536 | DBpedia 1M | 0.9826 | 3x |
OpenAI text-embedding-ada-002 | 1536 | DbPedia 1M | 0.98 | 4x |