Mistral#

Platform V Vector DB (далее - Vector DB) совместим с недавно выпущенным Mistral Embed и его официальным Python SDK, который можно установить так же, как любой другой пакет.

Настройка#

Установка клиента#

pip install mistralai

А затем настройте:

from mistralai.client import MistralClient
from qdrant_client import QdrantClient
from qdrant_client.models import PointStruct, VectorParams, Distance

collection_name = "example_collection"

MISTRAL_API_KEY = "your_mistral_api_key"
client = QdrantClient(":memory:")
mistral_client = MistralClient(api_key=MISTRAL_API_KEY)
texts = [
    "Qdrant is the best vector search engine!",
    "Loved by Enterprises and everyone building for low latency, high performance, and scale.",
]

Посомтрите, как использовать API модели встраивания для вложения документа для поиска.

Следующий пример показывает, как встроить документ с помощью models/embedding-001 с типом задачи retrieval_document:

Встраивание документа#

result = mistral_client.embeddings(
    model="mistral-embed",
    input=texts,
)

Возвращенный результат имеет поле данных с ключом: embedding. Значение этого ключа представляет собой список чисел с плавающей запятой, представляющих встраивание документа.

Преобразование в точки Vector DB#

points = [
    PointStruct(
        id=idx,
        vector=response.embedding,
        payload={"text": text},
    )
    for idx, (response, text) in enumerate(zip(result.data, texts))
]

Создание коллекции и вставка документов#

client.create_collection(collection_name, vectors_config=VectorParams(
        size=1024,
        distance=Distance.COSINE,
    )
)
client.upsert(collection_name, points)

Поиск документов с использованием Vector DB#

Когда документы проиндексированы, можно искать наиболее релевантные документы, используя ту же модель с типом задачи retrieval_query:

client.search(
    collection_name=collection_name,
    query_vector=mistral_client.embeddings(
        model="mistral-embed", input=["What is the best to use for vector search scaling?"]
    ).data[0].embedding,
)

Использование моделей встраивания Mistral с двоичной квантизацией#

Можно использовать модели встраивания Mistral с двоичной квантизацией — техникой, позволяющей уменьшить размер вложений в 32 раза без значительной потери качества результатов поиска.

При избыточной выборке 3 и лимите 100 имеется 95%-ный отзыв по точным ближайшим соседям при включенной переранжировке.

Избыточная выборка

1

1

2

2

3

3

Переранжировка

False

True

False

True

False

True

Лимит

10

0.53444

0.857778

0.534444

0.918889

0.533333

0.941111

20

0.508333

0.837778

0.508333

0.903889

0.508333

0.927778

50

0.492222

0.834444

0.492222

0.903556

0.492889

0.940889

100

0.499111

0.845444

0.498556

0.918333

0.497667

0.944556