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

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