전체 스택 벡터 검색 JSTOR 오픈 소스 기사를 위해 구축되었습니다 - 키워드가 아닌 의미별로 검색하십시오!
PENECONE 벡터 데이터베이스, 임베딩 용 휴지 페이스/트랜스포머로 제작 된 백엔드 및 메타 데이터 필터 유무에 관계없이 쿼리를 만들기위한 두 개의 엔드 포인트가있는 FastApi API. React.js로 만든 프론트 엔드
이 프로젝트는 전체 데이터 다운로드 옵션의 JSONL 형식으로 JSTOR의 공식 데이터 파트너 Constellate에서 구축 된 로컬 데이터 세트와 함께 사용됩니다.
현재 기사의 제목과 자막이 결합되고 내장되어 있으며, 쿼리에서 이러한 임베디드 타이틀 및 자막으로의 의미 론적 유사성을 측정합니다. 기사에 대한 자세한 정보는 메타 데이터의 일부로 반환됩니다.
API 및 Frontend 웹 앱을 통해 원하는 상위 K 결과를 통과 할 수 있으며 Pinecone 메타 데이터 쿼리 언어를 사용하여 필터 사전 형식으로 날짜 및 페이지 수와 같은 필터를 전달할 수도 있습니다.
API를 통해 메타 데이터 필터의 사전은 파인 네 콘에 전달할 수있는 사전 형식을 직접 반영해야하지만 웹 앱은 키를 추가하고 사용자는 값 만 양식에 입력 할 수 있습니다.
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 인덱스에 포함시키고 상향 조정해야합니다. 참고로, 이것은 현재 인덱스에 추가되므로 새 데이터 만 인덱스 내부에있게하려면이 저장소 내에서 dbclient 클래스의 ._delete_index () 메소드로 수행 할 수있는 인덱스를 먼저 삭제해야합니다.
/백엔드 폴더에서 API는 다음 중 하나를 실행할 수 있습니다.
$ uvicorn main:app$ uvicorn main:app --reload 는 개발 변경으로 API를 업데이트하지만 Ctrl + C로 종료되지는 않습니다. API에는 두 개의 엔드 포인트가 있습니다. 하나는 간단한 쿼리 전용 검색과 하나는 쿼리 + 메타 데이터 필터가있는 검색 용입니다. 그러나 필터가 처리되는 방식은 필터링 된 엔드 포인트가 빈 딕트와 함께 작동 함을 의미하므로 웹 앱에서 호출 된 유일한 엔드 포인트입니다.
GET /api/v1/query/{query_string}/{top_n}
두 가지 경로 매개 변수를 가져옵니다 : -query_string (데이터 유형 : String) - 사용자가 원하는 결과와 의미 적으로 유사 해야하는 기본 검색 쿼리 -Top_n (데이터 유형 : 정수) - 반환 할 일치 수
POST /api/v1/filter-query/{query_string}/{top_n}
동일한 두 가지 경로 매개 변수를 취합니다 : -query_string (데이터 유형 : String) - 사용자가 원하는 결과와 의미 적으로 유사 해야하는 기본 검색 쿼리 -Top_n (데이터 유형 : 정수) - 반환 할 일치 횟수
예를 들어 요청 본문의 필터 dict도 다음과 같습니다.
{
"document_type" : { "$eq" : " document " },
"word_count" : { "$gte" : 2000 }
}두 엔드 포인트는 동일한 유형의 응답을 반환하며, 예를 들어 'Matches'키 내의 배열로 주요 결과가 있습니다.
{
"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 .