Сведения о наборе данных
Parquet, размещённых на huggingface.co. Файлы называются 0.parquet, 1.parquet, …, 25.parquet. Чтобы посмотреть несколько строк из набора данных в качестве примера, перейдите на эту страницу Hugging Face.
Создайте таблицу
dbpedia для хранения идентификатора статьи, заголовка, текста и эмбеддинг-вектора:
Загрузите таблицу
dbpedia отображается 1 миллион строк:
Семантический поиск
- Принять от пользователя поисковый запрос на естественном языке, например “Расскажи мне о живописных железнодорожных путешествиях”, “Детективные романы, действие которых происходит в Европе” и т. д.
- Сгенерировать эмбеддинг-вектор для поискового запроса с помощью LLM-модели
- Найти в наборе данных ближайших соседей для эмбеддинг-вектора поискового запроса
Выполните поиск по векторному сходству полным перебором
dbpedia
быстрый способ наглядно продемонстрировать семантический поиск — использовать эмбеддинг-векторы из самого набора данных в качестве поисковых
векторов. Например:
Query
Response
max_threads=1, чтобы оценить реальное
использование вычислительных ресурсов и пропускной способности хранилища (экстраполируйте это на продакшн-набор данных с миллионами векторов!)
Создайте индекс векторного сходства
vector:
Выполните ANN-поиск
Query
Response
Генерация эмбеддингов для поискового запроса
dbpedia. В реальных приложениях вектор поиска должен генерироваться для пользовательского запроса, который может быть сформулирован на естественном языке. Вектор поиска следует генерировать с помощью той же LLM-модели, которая использовалась для создания эмбеддинг-векторов для набора данных.
Ниже приведён пример Python-скрипта, демонстрирующий, как программно вызывать API OpenAI для генерации эмбеддинг-векторов с использованием модели text-embedding-3-large. Затем поисковый эмбеддинг-вектор передаётся в качестве аргумента в функцию cosineDistance() в запросе SELECT.
Для запуска скрипта необходимо, чтобы API-ключ OpenAI был задан в переменной окружения OPENAI_API_KEY.
API-ключ OpenAI можно получить после регистрации на https://platform.openai.com.
Демо-приложение Q&A
- Принимает от пользователя тему в качестве входных данных
- Генерирует эмбеддинг-вектор для темы, вызывая API OpenAI с моделью
text-embedding-3-large - Извлекает наиболее релевантные статьи/документы из Википедии, используя поиск по векторному сходству в table
dbpedia - Принимает от пользователя вопрос в свободной форме на естественном языке, относящийся к теме
- Использует Chat API OpenAI
gpt-3.5-turbo, чтобы ответить на вопрос на основе сведений из документов, извлечённых на шаге #3. Документы, извлечённые на шаге #3, передаются в Chat API как контекст и являются ключевым связующим звеном в генеративном ИИ.
OPENAI_API_KEY был задан API-ключ OpenAI. API-ключ OpenAI можно получить после регистрации на https://platform.openai.com.