ChatGPT+ Векторная база данных + prompt-as-code - стек CVP
Я рад поделиться демонстрационным приложением, над которым мы работали здесь, в Zilliz. Мы называем его OSS Chat — чатбот, который можно использовать для получения технических знаний о ваших любимых open-source проектах. Этот первый релиз поддерживает только Hugging Face, Pytorch и Milvus, но мы планируем расширить его на несколько ваших любимых open-source проектов. Мы создали OSS Chat с использованием OpenAI's ChatGPT и векторной базы данных Zilliz! Мы предлагаем его как бесплатный сервис для всех, кто им пользуется. Если вы хотите, чтобы ваш open-source проект был добавлен в список, сообщите нам.
Предыстория того, почему мы создали OSS Chat
У ChatGPT есть ограничения из-за ограниченной базы знаний, что иногда приводит к галлюцинирующим ответам, когда его спрашивают о незнакомых темах. Чтобы преодолеть это ограничение, мы представляем новый AI stack: ChatGPT+Vector database+prompt-as-code, или CVP Stack.
ChatGPT исключительно хорошо отвечает на запросы на естественном языке. В сочетании с prompt, который связывает запрос пользователя и найденный текст, ChatGPT генерирует релевантный и точный ответ. Такой подход может избавить ChatGPT от предоставления «галлюцинирующих ответов».
Мы создали OSS Chat как рабочую демонстрацию CVP stack. OSS Chat использует различные GitHub-репозитории open-source проектов и связанные с ними страницы документации в качестве источника истины. Мы преобразуем эти данные в embeddings и сохраняем embeddings в Zilliz, а связанный контент — в отдельном хранилище данных. Когда пользователь взаимодействует с OSS Chat, задавая вопросы о любом open-source проекте, мы запускаем similarity search в Zilliz, чтобы найти релевантное совпадение. Полученные данные передаются в ChatGPT для генерации точного и корректного ответа.
Архитектура OSS Chat
Галлюцинирование ответа
Я хочу показать вам несколько примеров вопросов и ответов с использованием ChatGPT и OSS Chat, чтобы продемонстрировать, как можно устранить некоторые некорректные ответы.
Q1 Поддерживает ли Hugging Face OpenAI Whisper
Когда мы задали ChatGPT этот вопрос, он признал свое ограничение и дал нам точный ответ (у него не было данных), который не был полезен.
По состоянию на дату окончания моих знаний в сентябре 2021 года Hugging Face не объявляла о поддержке OpenAI Whisper. Однако всегда возможно, что они добавят поддержку в будущем. OpenAI Whisper — это новая языковая модель от OpenAI, и другим компаниям и разработчикам может потребоваться некоторое время, чтобы интегрировать ее в свои платформы и продукты.
С OSS Chat, поскольку мы берем данные с сайта документации Huggingface, мы можем получить точный ответ. Да, Hugging Face поддерживает OpenAI Whisper. Класс FlaxWhisperModel доступен в библиотеке transformers, которая является оберткой вокруг модели OpenAI Whisper. Вы можете использовать этот класс для загрузки предобученной модели OpenAI Whisper и применять ее для различных задач обработки естественного языка, таких как классификация текста, ответы на вопросы и генерация текста.
Q2 Что делает API torch.compile?
Мы задали ChatGPT вопрос об API PyTorch и получили длинный ответ о том, что это такое (о чем мы не спрашивали), а также ответ, утверждающий, что в PyTorch нет API torch.compile.
По состоянию на дату окончания моих знаний в сентябре 2021 года в PyTorch нет API torch.compile, которая является популярной open-source библиотекой машинного обучения, разработанной Facebook AI Research.
Однако PyTorch предоставляет различные API, связанные с компиляцией и оптимизацией моделей нейронных сетей, такие как torch.nn.Module, который является базовым классом для всех модулей нейронных сетей в PyTorch. torch.nn.Module предоставляет различные методы и hooks для определения и оптимизации моделей нейронных сетей.
Кроме того, PyTorch предоставляет интерфейс для интеграции с компиляторами Just-In-Time (JIT), такими как компилятор TorchScript JIT, который можно использовать для оптимизации и компиляции моделей PyTorch для эффективного выполнения на различных аппаратных платформах. Компилятор JIT можно использовать для преобразования моделей PyTorch в автономное сериализованное представление, которое можно загрузить и выполнить в других средах или языках. В целом, хотя у PyTorch нет API torch.compile, он предоставляет различные API и инструменты для оптимизации и компиляции моделей нейронных сетей.
Вот что нам сообщил OSSChat:
Цель API torch.compile — ускорить код PyTorch, компилируя его заранее. Он может обрабатывать произвольный код Python с минимальными изменениями существующего кода и поддерживает поток управления, зависящий от данных. Он также способен обрабатывать вызовы функций, не относящихся к PyTorch, которые трассировка TorchScript рассматривает как константы, что может привести к некорректным результатам.
Q3 Что такое TTL в Milvus и как его настроить
Для этого заключительного вопроса мы обратились к ChatGPT, и он дал нам разумный ответ (в нем даже были фрагменты кода!), но это не был ответ на вопрос. Вместо этого это была одна из тех «галлюцинаций», где он, должно быть, скомпилировал ответ.
В Milvus TTL (Time To Live) — это функция, которая позволяет задать срок действия ваших данных. Когда вы задаете TTL для коллекции или партиции в Milvus, Milvus автоматически удалит все данные, которые превысили указанный TTL. Чтобы задать TTL для коллекции или партиции в Milvus, можно использовать API set_collection_ttl или set_partition_ttl соответственно. Вот пример:
pythonCopy code
import datetime
from milvus import Milvus, DataType
milvus = Milvus()
# create a collection
collection_param = {
'collection_name': 'my_collection',
'dimension': 128,
'index_file_size': 1024,
'metric_type': DataType.FLOAT_VECTOR,
}
milvus.create_collection(collection_param)
# set TTL for the collection
now = datetime.datetime.now()
delta = datetime.timedelta(days=7) # TTL of 7 days
expiry_time = now + delta
milvus.set_collection_ttl('my_collection', expiry_time.timestamp())
# create a partition
partition_param = {
'collection_name': 'my_collection',
'partition_name': 'my_partition',
}
milvus.create_partition(partition_param)
# set TTL for the partition
milvus.set_partition_ttl('my_collection', 'my_partition', expiry_time.timestamp())
В этом примере мы создаем коллекцию и партицию в Milvus. Затем мы задаем TTL в 7 дней как для коллекции, так и для партиции, используя API set_collection_ttl и set_partition_ttl соответственно. TTL указывается в виде Unix timestamp, то есть количества секунд с 1 января 1970 года. Мы рассчитываем время истечения срока действия, добавляя TTL к текущему времени с помощью модуля datetime.
Обратите внимание, что при запуске Milvus необходимо включить функцию TTL. Это можно сделать, задав параметр TTL_CHECK_INTERVAL в конфигурационном файле Milvus. Значение по умолчанию — 60 секунд.
OSSchat, с другой стороны, дал нам правильный ответ: одну строку кода для установки желаемого количества секунд в свойстве коллекции.
TTL означает "Time to Live" в Milvus. Это функция, которая позволяет задать срок действия данных в коллекции. Когда срок действия данных в коллекции истекает, они автоматически очищаются и не участвуют в поиске или запросах.
Чтобы задать значение TTL для коллекции в Milvus, можно использовать метод collection.set_properties() в Python. Например, чтобы задать значение TTL равным 1800 секундам (30 минут), можно использовать следующий код:
collection.set_properties(properties={"collection.ttl.seconds": 1800})
Вы также можете задать значение TTL при создании коллекции, указав свойство collection.ttl.seconds в свойствах коллекции. Значение должно быть указано в секундах и должно быть равно 0 или больше. Значение 0 означает, что TTL отключен.
Начните сейчас
В ближайшие дни мы добавим больше функциональности в OSS Chat и напишем сопроводительные блоги, чтобы рассказать вам, как мы это создаём. А пока попробуйте поиграть с OSS Chat и сообщите нам, какие возможности вы хотели бы видеть, или, если у вас есть open-source проект для добавления, сообщите нам и об этом!
Читать далее

Introducing Functions and Model Inference on Zilliz Cloud: Automatic Embedding and Reranking with Hosted Models
Zilliz Cloud Functions auto-generate embeddings via OpenAI, Voyage AI, Cohere, or Zilliz Hosted Models. Built-in reranking — just insert text and search.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.

8 Latest RAG Advancements Every Developer Should Know
Explore eight advanced RAG variants that can solve real problems you might be facing: slow retrieval, poor context understanding, multimodal data handling, and resource optimization.



