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 |
