OpenAI#
Platform V Vector DB (далее - Vector DB) поддерживает работу с вложениями от OpenAI.
Существует официальный пакет для Python от OpenAI, который упрощает получение вложений, и его можно установить с помощью pip:
pip install openai
Настройка клиентов OpenAI и Vector DB#
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)
Преобразование выходных данных модели в точки Vector DB#
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)
Поиск документов с использованием Vector DB#
Когда документы проиндексированы, можно искать наиболее релевантные документы, используя ту же модель.
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 с двоичной квантизацией Vector DB#
Можно использовать модели вложения OpenAI с двоичной квантизацией — техникой, позволяющей уменьшить размер вложений в 32 раза без значительного ухудшения качества результатов поиска.
Метод |
Размерность |
Тестовый набор данных |
Отзывчивость |
Переобучение |
|---|---|---|---|---|
OpenAI text-embedding-3-large |
3072 |
0.9966 |
3x |
|
OpenAI text-embedding-3-small |
1536 |
0.9847 |
3x |
|
OpenAI text-embedding-3-large |
1536 |
0.9826 |
3x |
|
OpenAI text-embedding-ada-002 |
1536 |
0.98 |
4x |