O OP Vault usa a pilha de opções (o OpenAI + Pinecone Vector Database) para permitir que os usuários enviem seus próprios arquivos de base de conhecimento personalizados e faça perguntas sobre seu conteúdo.
Vault.pash.city

Com a configuração rápida, você pode iniciar sua própria versão deste servidor de Golang, juntamente com um front-end de React amigável que permite que os usuários façam perguntas do OpenAI sobre a base de conhecimento específica fornecida. O foco principal está no conteúdo legível pelo homem, como livros, cartas e outros documentos, tornando-o uma ferramenta prática e valiosa para extração de conhecimento e resposta a perguntas. Você pode fazer upload de uma biblioteca inteira de livros e documentos e receber respostas pontiagudas, juntamente com o nome do arquivo e a seção específica dentro do arquivo em que a resposta é baseada!

Com o cofre, você pode:
Siga os documentos GO AQUI
Eu recomendo instalar o NVM e usá -lo para instalar o nó v19
sudo apt-get install -y poppler-utils no ubuntu, ou brew install poppler no mac no mac
secretsecret/openai_api_key e cole sua chave da API do OpenAI: echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key e cole sua chave da API Pinecone: echo "your_pinecone_api_key_here" > secret/pinecone_api_key
Ao configurar seu índice Pinecone, use um tamanho de vetor de 1536 e mantenha todas as configurações padrão as mesmas.
secret/pinecone_api_endpoint e cole seu endpoint da API Pinecone: echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
Instale as dependências do pacote JavaScript:
npm install
Execute o servidor da web do Golang (porta padrão :8100 ):
npm start
Em outra janela do terminal, execute o webpack para compilar o código JS e criar um arquivo puntle.js:
npm run dev
Visite a versão local do site em http: // localhost: 8100
Nas capturas de tela de exemplo, enviei alguns livros de Platão e algumas cartas de Alexander Hamilton, mostrando a capacidade do OP Vault de responder a perguntas com base no conteúdo enviado.





O servidor de Golang usa as APIs post para processar uploads recebidos e responder a perguntas:
/upload para fazer upload de arquivos
/api/question para responder a perguntas
Todos os pontos de extremidade da API são declarados no arquivo Vault-Web-Server/Main.Go.
O arquivo Vault-Web-Server/Postapi/FileUpload.go contém a lógica UploadHandler para lidar com uploads recebidos no back-end. A função UploadHandler no pacote Postapi é responsável por lidar com uploads de arquivo (com um tamanho total máximo de upload de 300 MB) e processá -los em incorporação para armazenar em Pinecone. Ele aceita arquivos de texto PDF, EPUB, .Docx e de texto sem formatação, extrai o texto deles e divide o conteúdo em pedaços. Usando a API OpenAI, ele obtém incorporações para cada pedaço e upserts (inserções ou atualizações) as incorporações em Pinecone. A função retorna uma resposta JSON contendo informações sobre os arquivos enviados e seu status de processamento.
Depois de obter incorporações do OpenAI para cada pedaço de um arquivo carregado, o servidor armazena todas as incorporações, juntamente com os metadados associados a cada incorporação no Pinecone DB. Os metadados para cada incorporação são criados na função upsertembeddingstopinecone, com as seguintes chaves e valores:
file_name : O nome do arquivo do qual o pedaço de texto foi extraído.start : a posição inicial do caractere do pedaço de texto no arquivo original.end : a posição final do caractere do pedaço de texto no arquivo original.title : O título do pedaço, que também é o nome do arquivo neste caso.text : o texto do pedaço.Esse metadado é útil para fornecer contexto para as incorporações e é usado para exibir informações adicionais sobre as incorporações correspondentes ao recuperar os resultados do banco de dados Pinecone.
A função QuestionHandler no Vault-Web-Server/Postapi/question.go é responsável por lidar com todas as perguntas recebidas. Quando uma pergunta é inserida no front -end e o usuário pressiona "Search" (ou Enter), o servidor usa a API de incorporação do OpenAI mais uma vez para obter uma incorporação para a pergunta (também conhecida como vetor de consulta). Este vetor de consulta é usado para consultar o Pinecone DB para obter o contexto mais relevante para a pergunta. Finalmente, um prompt é criado embalando o contexto mais relevante + a pergunta em uma sequência rápida que segue limites de token OpenAI (a biblioteca Go Tiktoken é usada para estimar a contagem de token).
O front -end é construído usando React.js e less para estilo.
Se você quiser ler mais sobre este tópico, recomendo esta postagem do blog Pinecone:
Espero que você goste (:
Atualmente, tenho o tamanho do arquivo individual máximo definido como 3MB. Se você deseja aumentar esse limite, edite as constantes MAX_FILE_SIZE e MAX_TOTAL_UPLOAD_SIZE em fileUpload.go.
Pdfs, .txt, .rtf, .docx, .epub e hetext.
Recentemente, o Pinecone limitou o uso de espaços para nomes para usuários gratuitos de camadas. Se você estiver em uma camada gratuita recém -criada, essas restrições serão aplicadas a você.