既存のデータベースから標準化された識別子への概念ラベルを解決することは、生物医学データに注釈を付けるプロセスにおける基本的な要件です。 BioportalやTranslator Name Resolution Serviceを含むいくつかの注釈サービスが利用可能ですが、それらのほとんどは簡単なマッチングメカニズムに依存しています(それぞれMGREPおよびSOLR)。残念ながら、これらのメカニズムは、標準化された識別子からかなりのバリエーションを示すコンセプトラベルを扱う場合、または同義語を扱う場合、しばしば不十分です。
概念解像度の精度を向上させるために、ベクターの類似性検索の使用を調査することを提案します。翻訳者Babelプロジェクトによって収集された広範なデータセットを活用します。これには、生物医学ドメイン(Pubchem、chembl、uniprot、mondo、omim、hgnc、drugbankなど)の識別子、ラベル、および同義語の膨大なリポジトリが含まれます。
生物医学リンクされた注釈ハッカソンの間、私たちの主な目的は次のとおりです。
名前解像度サービスは、コンセプトラベルを入力として取得し、スコアとそのIDキュリー、ラベル、同義語の辞書で表されるマッチングエンティティのリストを返すOpenAPI説明APIとして公開されます。
| 名前 | 創造 | Github Stars | 書かれています | sdk for | クエリ言語/api* | ベクトル関数を実装します | コメント |
|---|---|---|---|---|---|---|---|
| qdrant | 2020年7月 | 〜14k | さび | Python、JS、Rust、Go、.net | Openapi、GRPC | コサイン、ユークリッド、ドット | Webサービスを展開することなく、メモリ内またはディスク上で永続的なローカルスタンドアロンツールとして使用できます |
| ミルバス | 2019年10月 | 〜24k | 行く | Python、JS、Java、Go | Openapi | コサイン、ユークリッド、内製品 | 別名。 Zilliz Cloud |
| 彩度 | 2022年10月 | 〜9k | Python | Python、JS | Openapi | ||
| 織ります | 2016年3月 | 〜8k | 行く | Python、JS、Java、Go | GraphQl API | コサイン、ユークリッド | |
| pgvector | 2021年4月 | 〜6.5k | c | Postgresを介してsdk❓️ | SQL | コサイン、ユークリッド、内製品、タクシー | PostgreSQLに統合されています |
*クエリ言語/APIクエリ言語またはAPIのタイプを使用して、ベクトルデータベース内の情報をクエリすることができます
これらすべての製品はオープンソースであり、それらはすべて、ベクトルデータベースを探索するためのシンプルなWeb UIを提案しています。
それらのほとんどは、現代的でシンプルなAPIを持っています(postgreSQL内に住んでいるPGVectorを除く)
テキスト埋め込みモデルのリファレンスベンチマーク:https://huggingface.co/blog/mteb
リーダーボード:https://huggingface.co/spaces/mteb/leaderboard
人気のある埋め込みモデル:
bge-large-en-v1.5text-embedding-ada-002sentence-transformers/all-MiniLM-L6-v2jina-embeddings-v2-base-enembed-english-v3.0 定義されます。
ベクトルデータベースの既存のベンチマーク:
19/01/2024の予備結果(バベルの同義語はまだ完全にロードされていません、薬物の後のファイルの欠落:遺伝子、タンパク質、経路、UMLS):ほとんどの問題は「ラット」と「ACP-044用量A」(タイムアウトではありませんが、興味深い結果はありませんが、興味深い結果はありません)
サービスの開始:
docker compose up -d workspaceコンテナに入って、読み込みスクリプトを実行します。
babelの同義語をダウンロードして、vectordbにロードします。
make load(実験)pgvectorのinfuldictionaryを負荷します:
python src/pubdict_load.pylimit機能を適切に使用できなくなります(VectordBの最初の結果が同じポイントからである場合、1つの結果のみを返します。これは、ユーザーが尋ねた2の制限と一致しません)可能な解決策は、2つのテーブル(1つは埋め込み用、もう1つはコンセプトインフォス用)を使用して、PostgresとPGVectorを使用することですが、それはシステムをJSONストアよりもはるかに複雑にするでしょう。
単一のポイントで複数の無名のベクトルをサポートできる自己ホストのVectordBはありますか? (現在、QDRANTは、ユースケースに適合しない複数の名前付きベクトルのみをサポートしています)
はじめにプレゼンテーション:https://docs.google.com/presentation/d/1_ntmf-lthvybbvvfusdxsdbeb0wm_yr_bvnnt-ivlktc/edit
Pubdictionaryの実験:https://docs.google.com/document/d/1nipvy2zhzedmf5bjcuzcbgzifn22v9kpzfo4etxl89m/edit
結論のプレゼンテーション:https://docs.google.com/presentation/d/1sjeuo4oegnmamtrvcawb0tzjzr9sgnyh-efwtjf99lg/edit
PREPRINT BIOHACKRXIVペーパー:http://preview.biohackrxiv.org/papers/bdda0f94-f526-4f35-8768-8faf62d731fa/paper.pdf
デモAPI:https://concecte-resolver.137.120.31.102.nip.io