OP Vaultは、OPスタック(OpenAI + Pinecone Vector Database)を使用して、ユーザーが独自のカスタムナレッジベースファイルをアップロードし、コンテンツについて質問することができます。
vault.pash.city

クイックセットアップを使用すると、このGolangサーバーの独自のバージョンを起動し、ユーザーが提供された特定の知識ベースについてOpenaIの質問をすることができるユーザーフレンドリーなReact Frontendを起動できます。主な焦点は、本、手紙、その他の文書などの人間が読みやすいコンテンツにあり、知識の抽出と質問をするための実用的で価値のあるツールになっています。ライブラリ全体の書籍とドキュメント全体をアップロードして、回答が基にしているファイル内のファイルの名前と特定のセクションとともに、先の尖った回答を受け取ることができます!

ボールトを使用すると、次のことができます。
ここでGOドキュメントに従ってください
NVMをインストールし、それを使用してノードv19をインストールすることをお勧めします
sudo apt-get install -y poppler-utils on ubuntu、またはbrew install poppler on mac
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 WebServerを実行します(デフォルトポート:8100 ):
npm start
別の端末ウィンドウで、Webpackを実行してJSコードをコンパイルし、bundle.jsファイルを作成します。
npm run dev
http:// localhost:8100のサイトのローカルバージョンにアクセスしてください
例のスクリーンショットでは、プラトンによる本とアレクサンダー・ハミルトンのいくつかの手紙をアップロードし、アップロードされたコンテンツに基づいて質問に答える能力を紹介しました。





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(挿入または更新)の埋め込みの埋め込みが埋め込みになります。この関数は、アップロードされたファイルとその処理ステータスに関する情報を含むJSON応答を返します。
アップロードされたファイルの各チャンクのOpenAI埋め込みを取得した後、サーバーはすべての埋め込みを保存し、Pinecone DBに埋め込む各埋め込みに関連するメタデータを保存します。各埋め込みのメタデータは、次のキーと値を使用して、upsertembeddingStopinecone関数に作成されます。
file_name :テキストチャンクが抽出されたファイルの名前。start :元のファイルのテキストチャンクの開始文字位置。end :元のファイルのテキストチャンクのエンディング文字位置。title :この場合のファイル名でもあるチャンクのタイトル。text :チャンクのテキスト。このメタデータは、埋め込みにコンテキストを提供するのに役立ち、Pineconeデータベースから結果を取得する際に、一致した埋め込みに関する追加情報を表示するために使用されます。
Vault-Web-Server/postapi/custions.goのQuestionHandler機能は、すべての入っている質問を処理する責任があります。 Frontendに質問が入力され、ユーザーが「検索」(または入力)を押すと、サーバーはOpenai Embeddings APIを再度使用して、質問の埋め込み(別名クエリベクトル)を取得します。このクエリベクトルは、Pinecone DBを照会するために使用され、質問に最も関連性の高いコンテキストを取得します。最後に、最も関連性の高いコンテキスト + Openaiトークンの制限に付着するプロンプトの文字列に質問を梱包することにより、プロンプトが構築されます(Go Tiktokenライブラリは、トークンカウントを推定するために使用されます)。
フロントエンドは、 React.jsを使用して構築されており、スタイリング用にless 。
このトピックについてもっと読みたい場合は、Pineconeブログからこの投稿をお勧めします。
私はあなたがそれを楽しむことを願っています(:
現在、最大個々のファイルサイズが3MBに設定されています。この制限を増やす場合は、fileupload.goでMAX_FILE_SIZEとMAX_TOTAL_UPLOAD_SIZE定数を編集します。
pdfs、.txt、.rtf、.docx、.epub、およびplantext。
最近、Pineconeは無料のティアユーザーに名前空間を使用しました。新しく作成された無料のティアにいる場合、これらの制限はお客様に適用されます。