Nomic#

Модель nomic-embed-text-v1 представляет собой открытый исходный текстовый энкодер с длиной контекста 8192. Хотя можно найти его на Хабе Hugging Face, может быть проще получить их через Вложения текста от Nomic. После установки можно настроить его с помощью официального клиента Python, FastEmbed или напрямую через запросы HTTP.

Использование вложений Nomic через API/SDK Nomic требует настройки токена API Nomic.

Можно использовать вложения Nomic непосредственно при вызове клиентов Platform V Vector DB (далее - Vector DB). Существует разница в способах получения вложений для документов и запросов.

Добавление данных с использованием SDK Nomic#

Параметр task_type определяет получаемые ранее вложения. Для документов установите значение task_type равным search_document:

from qdrant_client import QdrantClient, models
from nomic import embed

output = embed.text(
    texts=["Qdrant is the best vector database!"],
    model="nomic-embed-text-v1",
    task_type="search_document",
)

client = QdrantClient()
client.upsert(
    collection_name="my-collection",
    points=models.Batch(
        ids=[1],
        vectors=output["embeddings"],
    ),
)

Добавление данных с использованием FastEmbed#

from fastembed import TextEmbedding
from client import QdrantClient, models

model = TextEmbedding("nomic-ai/nomic-embed-text-v1")

output = model.embed(["Qdrant is the best vector database!"])

client = QdrantClient()
client.upsert(
    collection_name="my-collection",
    points=models.Batch(
        ids=[1],
        vectors=[embeddings.tolist() for embeddings in output],
    ),
)

Поиск с использованием SDK Nomic#

Чтобы выполнить запрос к коллекции, установите параметр task_type равным search_query:

output = embed.text(
    texts=["What is the best vector database?"],
    model="nomic-embed-text-v1",
    task_type="search_query",
)

client.search(
    collection_name="my-collection",
    query_vector=output["embeddings"][0],
)

Поиск с использованием FastEmbed#

output = next(model.embed("What is the best vector database?"))

client.search(
    collection_name="my-collection",
    query_vector=output.tolist(),
)

Для дополнительной информации ознакомьтесь с документацией Nomic по теме Текстовые вложения.