OP Vault使用OP堆棧(OpenAI + Pinecone Vector數據庫)來使用戶上傳自己的自定義知識庫文件並詢問有關其內容的問題。
Vault.Pash.City

通過快速設置,您可以啟動自己的Golang服務器版本以及用戶友好的React Frontend,允許用戶向OpenAI提出有關所提供的特定知識庫的問題。主要的重點是書籍,信件和其他文檔等可讀內容,使其成為知識提取和提問的實用和有價值的工具。您可以上傳整個圖書館的書籍和文檔的價值,並收到尖頭答案以及文件中的文件的名稱以及答案所基於的特定部分!

使用金庫,您可以:
在這里關注GO文檔
我建議安裝NVM並使用它安裝節點V19
sudo apt-get install -y poppler-utils在ubuntu上,或在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 Web服務器(默認端口:8100 ):
npm start
在另一個終端窗口中,運行WebPack來編譯JS代碼並創建一個bundle.js文件:
npm run dev
訪問該網站的本地版本http:// localhost:8100
在示例屏幕截圖中,我上傳了柏拉圖的幾本書和亞歷山大·漢密爾頓(Alexander Hamilton)的一些信件,展示了操作保險櫃根據上傳內容回答問題的能力。





Golang Server使用Post API來處理傳入上傳並回答問題:
/upload用於上傳文件
/api/question
所有API端點均在Vault-Web-server/main.go文件中聲明。
Vault-web-server/postapi/fileupload.go文件包含用於處理後端上的上傳上傳的UploadHandler邏輯。 PostAPI軟件包中的上載函數負責處理文件上傳(最大總上傳大小為300 MB),並將它們處理到嵌入到Pinecone中的嵌入式中。它接受PDF,epub,.docx和純文本文件,從中提取文本,並將內容分為塊。使用OpenAI API,它為每個塊和Upserts(插入或更新)的嵌入式嵌入到Pinecone中。該功能返回一個JSON響應,其中包含有關上傳文件及其處理狀態的信息。
在上傳文件的每個塊中獲取OpenAI嵌入式後,服務器將存儲所有嵌入,以及與Pinecone DB中的每個嵌入相關的元數據。每個嵌入的元數據是在UpSertembeddingstopinecone函數中創建的,具有以下鍵和值:
file_name :提取文本塊的文件的名稱。start :原始文件中文本塊的起始字符位置。end :原始文件中文本塊的結尾字符位置。title :塊的標題,在這種情況下也是文件名。text :塊的文字。該元數據對於向嵌入式提供上下文很有用,並用於在發現Pinecone數據庫結果時顯示有關匹配嵌入的其他信息。
Vault-web-server/postapi/Question中的QuestionHandler功能。GO負責處理所有傳入的問題。當在前端輸入問題並按下“搜索”(或輸入)時,服務器再次使用OpenAI Embeddings API再次獲取問題的嵌入(又稱查詢向量)。此查詢向量用於查詢松果DB,以獲取問題的最相關上下文。最後,通過包裝最相關的上下文 +在遵守OpenAI代幣限制的提示字符串中構建提示(Go Tiktoken庫用於估計令牌計數)。
前端是使用React.js構建的,而less用於樣式。
如果您想閱讀有關此主題的更多信息,我建議您從Pinecone博客中進行此帖子:
希望您喜歡它(:
我目前將最大的單個文件大小設置為3MB。如果要增加此限制,請編輯fileupload.go中的MAX_FILE_SIZE和MAX_TOTAL_UPLOAD_SIZE常數。
pdfs,.txt,.rtf,.docx,.epub和明文。
最近,Pinecone限制了免費層用戶的名稱空間的使用。如果您處於新創建的免費層,這些限制將適用於您。