
このレポは、ARXIVに関する300,000 ML以上の論文の単純なセマンティック検索エンジン(およびカウント)のSearchHearxiv.comの実装が含まれています。コードは、 appとdata 2つの部分に分けられます。 appには、Webアプリのフロントエンドとバックエンドの両方の実装が含まれていますが、 data OpenAIとPineconeを使用して定期的にデータベースを更新する責任があります。 appとdataには、クラウドプラットフォームへの展開を簡単に展開するためのDockerFileが含まれています。プロジェクトのクローンを自分で実行することを誰もが期待していません(または奨励します)(それは奇妙です)、それは同様のタイプのセマンティック検索エンジンを構築する人々のインスピレーションとして役立つかもしれません。
コードを実行するには、次の環境変数リストを提供する必要があります。
KAGGLE_USERNAME=your_kaggle_username
KAGGLE_API_KEY=your_kaggle_api_key
OPENAI_API_KEY=your_openai_api_key
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_INDEX_NAME=your_pinecone_index_name
Kaggleのユーザー名とAPIキーは、コーネル大学が維持(および毎週更新)したArxivメタデータセットを取得するために必要です。 OpenAI APIキーはtext-embedding-ada-002モデルを使用して新しい論文を埋め込むために使用されます。 Pinecone APIキーとインデックス名は、Pineconeでホストされているインデックス(つまりベクトルデータベース)に接続するために使用されます。
埋め込みのみに興味がある場合は、Kaggleで完全なデータセットを公開しました。現在のサイズは約10GBですが、新しい論文が追加されると毎週わずかに成長します。
何らかの理由で、自分で論文を埋め込みたい場合は、Kaggleからメタデータセットをダウンロードし、環境変数の設定、Pineconeインデックスの作成後、 embed.py dataで実行できます。 Pineconeを使用したくない場合は、必要なコードを自由に変更できます。インデックスは最初に空になるため、スクリプトはすべてのMLペーパー(再び、300,000以上)を埋め込みます。ただし、そうする前に、OpenaiのTiktokenトークンザーを使用して価格を推定し、確認するように依頼します。このステップをスキップして、 python3 embed.py --no-confirmationを実行できます。
searchhearxiv.comが好きで、何かが改善されているのを見たい場合は、自由にプルリクエストを送信してください。