Op Vault использует стек OP (база данных Vector Isecone Vector Pinecone), чтобы позволить пользователям загружать свои собственные файлы базы знаний и задавать вопросы об их содержании.
Vault.pash.city

С помощью быстрой настройки вы можете запустить свою собственную версию этого сервера Golang вместе с удобным для пользователя Frontend, который позволяет пользователям задавать вопросы Openai о конкретной базе знаний. Основное внимание уделяется читаемым человеческим контенту, таким как книги, письма и другие документы, что делает его практическим и ценным инструментом для извлечения знаний и ответа вопросам. Вы можете загрузить целую библиотеку книг и документов и получить заостренные ответы вместе с именем файла и конкретным разделом в файле, на котором основан ответ!

С хранилищем вы можете:
Следуйте документам Go здесь
Я рекомендую установить NVM и использовать его для установки узла v19
sudo apt-get install -y poppler-utils на Ubuntu или brew install poppler на Mac
secret папкеsecret/openai_api_key и вставьте в него свой ключ Openai API: echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key и вставьте в него свою клавишу API PINECONE: echo "your_pinecone_api_key_here" > secret/pinecone_api_key
При настройке индекса Pinecone используйте размер вектора 1536 и сохраните все настройки по умолчанию одинаково.
secret/pinecone_api_endpoint и вставьте в него конечную точку API Pinecone: 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
В примере скриншотов я загрузил пару книг Платона и несколько букв Александра Гамильтона, демонстрируя способность OP Vault отвечать на вопросы на основе загруженного контента.





Сервер Golang использует Post API для обработки входящих загрузок и ответа на вопросы:
/upload для загрузки файлов
/api/question для ответа на вопросы
Все конечные точки API объявляются в файле Vault-Web-server/main.go.
Файл Vault-Web-Server/postApi/fileupload.go содержит логику UploadHandler для обработки входящих загрузок на бэкэнд. Функция uploadhandler в пакете PostApi отвечает за обработку загрузки файлов (с максимальным общим размером загрузки 300 МБ) и обработку их в встраивание для хранения в Pinecone. Он принимает pdf, epub, .docx и простые текстовые файлы, извлекает из них текст и делит контент на куски. Используя API OpenAI, он получает встраиваемые для каждого чанка и подъема (вставки или обновления) встроения в Pinecone. Функция возвращает ответ JSON, содержащий информацию о загруженных файлах и их статусе обработки.
После получения встроений OpenAI для каждого чанка загруженного файла, сервер хранит все встраивания, а также метаданные, связанные для каждого встраивания в Pinecone DB. Метаданные для каждого встраивания создаются в функции upsertembeddingstopinecone, со следующими ключами и значениями:
file_name : имя файла, из которого был извлечен текстовый кусок.start : начальная позиция символа текстового куски в исходном файле.end : Положение конечного символа текстового куски в исходном файле.title : Название чанка, которое также является именем файла в этом случае.text : текст куски.Эти метаданные полезны для предоставления контекста для встраиваний и используются для отображения дополнительной информации о соответствующих встроках при получении результатов из базы данных Pinecone.
Функция QuestionHandler в Vault-Web-Server/PostApi/Вопросы. Go отвечает за решение всех входящих вопросов. Когда на Frontend вводится вопрос, и пользователь нажимает «Поиск» (или ввода), сервер использует API Enterdings OpenAI еще раз, чтобы получить внедрение для вопроса (он же вектор запросов). Этот вектор запроса используется для запроса Pinecone DB, чтобы получить наиболее актуальный контекст для этого вопроса. Наконец, подсказка создается путем упаковки наиболее важного контекста + вопрос в быструю строку, которая придерживается лимитов токенов Openai (библиотека Go Tiktoken используется для оценки количества токенов).
Фронт построен с использованием React.js и less для стиля.
Если вы хотите узнать больше об этой теме, я рекомендую этот пост из блога Pinecone:
Надеюсь, вам понравится (:
В настоящее время у меня есть максимальный размер файла, установленный на 3 МБ. Если вы хотите увеличить этот предел, отредактируйте константы MAX_FILE_SIZE и MAX_TOTAL_UPLOAD_SIZE в FileUpload.go.
Pdfs, .txt, .rtf, .docx, .epub и plaintext.
Недавно PineCone ограничила использование пространств имен для бесплатных пользователей уровня. Если вы находитесь на недавно созданном бесплатном уровне, эти ограничения будут применяться к вам.