OP Vault utiliza la pila OP (base de datos Vector de Vector OpenAI + Pinecone) para permitir a los usuarios cargar sus propios archivos de base de conocimiento personalizados y hacer preguntas sobre sus contenidos.
bóveda.pash.city

Con una configuración rápida, puede iniciar su propia versión de este servidor de Golang junto con un frontend React fácil de usar que permite a los usuarios hacer preguntas de OpenAI sobre la base de conocimiento específica proporcionada. El enfoque principal está en el contenido legible por humanos, como libros, cartas y otros documentos, lo que lo convierte en una herramienta práctica y valiosa para la extracción de conocimiento y la respuesta a la pregunta. Puede cargar libros y documentos por valor de una biblioteca completa y recibir respuestas puntuales junto con el nombre del archivo y la sección específica dentro del archivo en el que la respuesta se basa.

Con la bóveda, puedes:
Sigue los documentos de Go aquí
Recomiendo instalar NVM y usarlo para instalar el nodo V19
sudo apt-get install -y poppler-utils en Ubuntu, o brew install poppler en Mac
secretsecret/openai_api_key y pegue su tecla API OpenAI en él: echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key y pegue su tecla API de Pinecone en él: echo "your_pinecone_api_key_here" > secret/pinecone_api_key
Al configurar su índice Pinecone, use un tamaño vectorial de 1536 y mantenga la misma configuración predeterminada.
secret/pinecone_api_endpoint y pegue su punto final de la API de Pinecone en él: echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
Instalar dependencias del paquete JavaScript:
npm install
Ejecute el servidor web de Golang (puerto predeterminado :8100 ):
npm start
En otra ventana de terminal, ejecute Webpack para compilar el código JS y crear un archivo Bundle.js:
npm run dev
Visite la versión local del sitio en http: // localhost: 8100
En las capturas de pantalla de ejemplo, subí un par de libros de Platón y algunas cartas de Alexander Hamilton, mostrando la capacidad de OP Vault para responder preguntas basadas en el contenido cargado.





El servidor Golang utiliza API de publicación para procesar las cargas entrantes y responder a las preguntas:
/upload para cargar archivos
/api/question para responder preguntas
Todos los puntos finales de la API se declaran en el archivo Vault-Web-server/main.go.
El archivo Vault-Web-Server/Postapi/FileUpload.go contiene la lógica UploadHandler para manejar las cargas entrantes en el backend. La función SubloadHandler en el paquete PostApi es responsable de manejar las cargas de archivos (con un tamaño de carga total máximo de 300 MB) y procesarlas en incrustaciones para almacenar en Pinecone. Acepta PDF, EPUB, .Docx y archivos de texto sin formato, extrae texto de ellos y divide el contenido en fragmentos. Usando la API de OpenAI, obtiene incrustaciones para cada fragmento y upserts (insertos o actualizaciones) los incrustaciones en pinecone. La función devuelve una respuesta JSON que contiene información sobre los archivos cargados y su estado de procesamiento.
Después de obtener incrustaciones de OpenAI para cada parte de un archivo cargado, el servidor almacena todos los incrustaciones, junto con metadatos asociados para cada incrustación en Pinecone DB. Los metadatos para cada incrustación se crean en la función UpsertenDingStopinecone, con las siguientes claves y valores:
file_name : el nombre del archivo desde el cual se extrajo la fragmentación de texto.start : la posición de carácter inicial de la fragmentación de texto en el archivo original.end : la posición del carácter final de la fragmentación de texto en el archivo original.title : El título de la fragmentación, que también es el nombre del archivo en este caso.text : El texto del fragmento.Estos metadatos son útiles para proporcionar contexto a los incrustaciones y se utiliza para mostrar información adicional sobre las embedidas coincidentes al recuperar los resultados de la base de datos Pinecone.
La función QuestionHandler en Vault-Web-server/Postapi/Preguntas. Go es responsable de manejar todas las preguntas entrantes. Cuando se ingresa una pregunta en el frontend y el usuario presiona "buscar" (o ingresar), el servidor usa la API de incrustaciones de OpenAI una vez más para obtener una incrustación para la pregunta (también conocido como Vector de consulta). Este vector de consulta se utiliza para consultar Pinecone DB para obtener el contexto más relevante para la pregunta. Finalmente, se construye un aviso empacando el contexto más relevante + la pregunta en una cadena rápida que se adhiere a los límites de token de apertura (la biblioteca GO Tiktoken se usa para estimar el recuento de tokens).
El frontend se construye usando React.js y less para el estilo.
Si desea leer más sobre este tema, recomiendo esta publicación del blog de Pinecone:
Espero que lo disfrutes (:
Actualmente tengo el tamaño máximo de archivo individual establecido en 3MB. Si desea aumentar este límite, edite las constantes MAX_FILE_SIZE y MAX_TOTAL_UPLOAD_SIZE en fileupload.go.
Pdfs, .txt, .rtf, .docx, .epub y texto sin texto.
Recientemente, Pinecone limitó el uso de espacios de nombres para usuarios de nivel gratuito. Si está en un nivel gratuito recién creado, estas restricciones se aplicarán a usted.