Полный поиск вектора стека, созданный для статей с открытым исходным кодом JSTOR - поиск по значению, а не ключевыми словами!
Бэкэнд, изготовленный с базой данных векторной векторной тона, HuggingFace/Transformers для встроений и API FASTAPI с двумя конечными точками для создания запросов с фильтрами метаданных или без них. Фронт, сделанный с React.js
Этот проект предназначен для использования с локальными наборами данных, созданными из официального партнера JSTOR CONTELLATE, в формате JSONL из полной опции загрузки данных.
В настоящее время названия и субтитры статей объединены и встроены, и семантическое сходство измеряется от запроса к этим встроенным названиям и субтитрам. Более подробная информация о статьях возвращается как часть метаданных.
Через API и веб -приложение Frontend можно пропустить желаемое количество результатов, а также могут быть переданы такие фильтры, как дата и количество страниц, в форме словаря фильтров с использованием языка запросов метаданных метаданных.
Через API словарь фильтров метаданных должен напрямую отражать формат словаря, который может быть передан в Pinecone, хотя веб -приложение будет обрабатывать добавление ключей, а пользователь может вводить только значения в форме.
Чтобы настроить Python и зависимости для запуска этого проекта:
$ python -m venv <evironment_name>$ <evironment_name>Scriptsactivate.bat$ pip install -r requirements.txt$ python <filename>.py PINECONE_API_KEY='<YOUR API KEY>'
PINECONE_ENV='<YOUR ENVIRONMENT>'
Чтобы добавить данные в свой индекс Pinecone:
Это должно внедрить и поднять все элементы в наборе данных в ваш индекс Pinecone. Обратите внимание, что это добавляет к текущему индексу, поэтому, если вы хотите, чтобы только новые данные находились внутри индекса, сначала вы должны удалить индекс, который можно сделать с помощью метода ._DELETE_INDEX () класса DBClient в этом репозитории.
В папке /бэкэнд API может быть запущен любым:
$ uvicorn main:app , которое не обновляет API с любыми изменениями разработки, но может быть легко отключено с помощью Ctrl + C в терминале$ uvicorn main:app --reload , которая обновит API с любыми изменениями разработки, но не будет отключаться с помощью Ctrl + C API имеет две конечные точки, одна для простого поиска запроса, и одна для поиска с Query Plus Metadata Filters. Тем не менее, способ обработки фильтров означает, что отфильтрованная конечная точка будет работать с пустым диктом и, следовательно, является единственной конечной точкой, вызванной веб -приложением.
GET /api/v1/query/{query_string}/{top_n}
Принимает два параметра пути: - Query_String (Тип данных: строка) - основной поисковый запрос, который должен быть семантически похож на результаты, которые хочет пользователь - top_n (Тип данных: Integer) - количество совпадений для возврата
POST /api/v1/filter-query/{query_string}/{top_n}
Принимает одинаковые два параметра пути: - Query_String (Тип данных: строка) - основной поисковый запрос, который должен быть семантически похож на результаты, которые хочет пользователь - top_n (тип данных: Integer) - количество совпадений для возврата
Плюс фильтр дикта в образе запроса, например:
{
"document_type" : { "$eq" : " document " },
"word_count" : { "$gte" : 2000 }
}Обе конечные точки возвращают один и тот же тип ответа, с основными результатами в качестве массива в ключе «совпадений», например:
{
"matches" : [
{
"id" : " 123-abc-321 " ,
"score" : 18.792 ,
"values" : [],
"metadata" : {
"categories" : [
" Language & Literature " ,
" Humanities "
],
"creator" : [
" A. Creator "
],
"date_published" : " 2020/04/01 " ,
"document_sub_type" : " " ,
"document_type" : " document " ,
"issue_number" : " 1 " ,
"language" : [
" eng "
],
"page_count" : 10.0 ,
"parent_publication" : " A publication " ,
"publisher" : " A publisher " ,
"sub_title" : " " ,
"title" : " An example " ,
"url" : " http://www.jstor.org/stable/1234 " ,
"volume_number" : " 2123 " ,
"word_count" : 123.0
}
}
],
"namespace" : " "
}После того, как бэкэнд настроен и работает API, вы сможете использовать веб -приложение для взаимодействия с API и более легко поиска. Чтобы сделать это:
$ npm install для установки зависимостей$ npm start запускать веб -приложение локально