OP Vault는 OP 스택 (OpenAi + Pinecone Vector Database)을 사용하여 사용자가 자신의 사용자 정의 지식베이스 파일을 업로드하고 해당 내용에 대한 질문을 할 수 있습니다.
vault.pash.city

빠른 설정으로 사용자가 제공 한 특정 지식 기반에 대해 OpenAI 질문을 할 수있는 사용자 친화적 인 React Frontend와 함께이 Golang 서버의 자체 버전을 시작할 수 있습니다. 주요 초점은 책, 편지 및 기타 문서와 같은 인간이 읽을 수있는 콘텐츠에있어 지식 추출 및 질문 응답을위한 실용적이고 귀중한 도구입니다. 전체 도서관의 책과 문서의 가치를 업로드하고 답변이 기반으로하는 파일 내 파일의 이름 및 특정 섹션과 함께 뾰족한 답변을받을 수 있습니다!

금고를 사용하면 다음을 수행 할 수 있습니다.
여기에서 Go Docs를 따르십시오
NVM을 설치하고 노드 v19를 설치하는 데 사용하는 것이 좋습니다.
sudo apt-get install -y poppler-utils 또는 MAC에 brew install poppler
secret 폴더에서 API 키 및 엔드 포인트 설정secret/openai_api_key 만들고 OpenAI API 키를 붙여 넣습니다. echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key 만들고 Pinecone API 키를 붙여 넣습니다. echo "your_pinecone_api_key_here" > secret/pinecone_api_key
Pinecone 지수를 설정할 때는 1536 의 벡터 크기를 사용하고 모든 기본 설정을 동일하게 유지하십시오.
secret/pinecone_api_endpoint 만들고 Pinecone API 엔드 포인트를 붙여 넣습니다. echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
JavaScript 패키지 종속성 설치 :
npm install
Golang Webserver (기본 포트 :8100 )를 실행합니다.
npm start
다른 터미널 창에서 Webpack을 실행하여 JS 코드를 컴파일하고 Bundle.js 파일을 만듭니다.
npm run dev
http : // localhost : 8100의 로컬 버전을 방문하십시오
스크린 샷 예제에서 나는 플라톤 (Plato)의 몇 권의 책과 알렉산더 해밀턴 (Alexander Hamilton)의 편지를 업로드하여 업로드 된 콘텐츠에 따라 질문에 답할 수있는 OP Vault의 능력을 보여 주었다.





Golang 서버는 Post API를 사용하여 들어오는 업로드를 처리하고 질문에 응답합니다.
/upload
/api/question
모든 API 엔드 포인트는 Vault-Web-Server/Main.go 파일에 선언됩니다.
Vault-Web-Server/PostApi/FileUpload.go 파일에는 백엔드에서 들어오는 업로드를 처리하기위한 UploadHandler 로직이 포함되어 있습니다. PostAPI 패키지의 업로드 핸들러 기능은 파일 업로드를 처리하고 (최대 총 업로드 크기 300MB)를 처리하고 Pinecone에 저장하기 위해 임베딩으로 처리합니다. PDF, Epub, .docx 및 일반 텍스트 파일을 허용하고 텍스트를 추출하고 내용을 청크로 나눕니다. OpenAI API를 사용하여 각 청크 및 고복에 대한 임베딩 (삽입 또는 업데이트)을 PENECONE로 삽입합니다. 이 기능은 업로드 된 파일 및 처리 상태에 대한 정보가 포함 된 JSON 응답을 반환합니다.
업로드 된 파일의 각 덩어리에 대해 OpenAi 임베딩을 얻은 후 서버는 모든 임베딩과 Pinecone DB의 각 임베딩과 관련된 메타 데이터를 저장합니다. 각 임베딩에 대한 메타 데이터는 UpsertembeddingStopinecone 기능에서 다음 키와 값으로 생성됩니다.
file_name : 텍스트 청크가 추출 된 파일의 이름.start : 원본 파일의 텍스트 청크의 시작 문자 위치.end : 원본 파일의 텍스트 청크의 결말 문자 위치.title :이 경우 파일 이름이기도 한 청크의 제목입니다.text : 청크의 텍스트.이 메타 데이터는 임베딩에 컨텍스트를 제공하는 데 유용하며 Pinecone 데이터베이스에서 결과를 검색 할 때 일치하는 임베딩에 대한 추가 정보를 표시하는 데 사용됩니다.
Vault-Web-Server/PostApi/Questions.Go의 QuestionHandler 기능은 모든 수신 질문을 처리 할 책임이 있습니다. 프론트 엔드에 질문이 입력되고 사용자가 "검색"(또는 Enter)을 누르면 서버는 OpenAI Embeddings API를 다시 한 번 사용하여 질문 (일명 쿼리 벡터)에 포함됩니다. 이 쿼리 벡터는 Pinecone DB를 쿼리하여 질문에 가장 관련이있는 컨텍스트를 얻는 데 사용됩니다. 마지막으로, 가장 관련성이 높은 컨텍스트 +를 포장하여 프롬프트가 구축됩니다. OpenAi 토큰 한도를 준수하는 프롬프트 문자열 (Go Tiktoken 라이브러리는 토큰 수를 추정하는 데 사용됩니다).
프론트 엔드는 React.js 사용하여 구축되며 스타일링을 위해 less .
이 주제에 대한 자세한 내용을 보려면 Pinecone 블로그 에서이 게시물을 추천합니다.
나는 당신이 그것을 즐기시기 바랍니다 (:
현재 최대 개별 파일 크기가 3MB로 설정되어 있습니다. 이 한계를 높이려면 MAX_FILE_SIZE 및 MAX_TOTAL_UPLOAD_SIZE 상수를 fileupload.go에서 편집하십시오.
pdfs, .txt, .rtf, .docx, .epub 및 plaintext.
최근 Pinecone은 무료 계층 사용자를위한 네임 스페이스 사용을 제한했습니다. 새로 만든 무료 계층에 있다면 이러한 제한 사항이 귀하에게 적용됩니다.