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限制了免费层用户的名称空间的使用。如果您处于新创建的免费层,这些限制将适用于您。