Menyelesaikan label konsep untuk pengidentifikasi standar dari database yang ada adalah persyaratan mendasar dalam proses anotasi data biomedis. Sementara beberapa layanan anotasi, termasuk Bioportal dan Layanan Resolusi Nama Penerjemah, tersedia, kebanyakan dari mereka mengandalkan mekanisme pencocokan langsung (masing -masing MGREP dan SOLR). Sayangnya, mekanisme ini sering gagal ketika berhadapan dengan label konsep yang menunjukkan variasi substansial dari pengidentifikasi standar atau ketika berhadapan dengan sinonim.
Kami mengusulkan untuk mengeksplorasi penggunaan pencarian kesamaan vektor untuk meningkatkan keakuratan resolusi konsep. Kami akan memanfaatkan dataset ekstensif yang dikumpulkan oleh Proyek Penerjemah Babel, yang mencakup gudang pengidentifikasi, label, dan sinonim yang luas dari domain biomedis (Pubchem, Chembl, Uniprot, Mondo, OMIM, HGNC, Drugbank, dan banyak lagi).
Selama hackathon anotasi terkait biomedis, tujuan utama kami adalah sebagai berikut:
Layanan Resolusi Nama akan diekspos sebagai API yang dijelaskan OpenAPI yang mengambil label konsep sebagai input, dan mengembalikan daftar entitas yang cocok, diwakili oleh kamus dengan skor dan curie, label, sinonim.
| Nama | Penciptaan | Bintang GitHub | Tertulis di | SDK untuk | Bahasa Permintaan/API* | Menerapkan fungsi vektor | Komentar |
|---|---|---|---|---|---|---|---|
| Qdrant | Juli 2020 | ~ 14K | Karat | Python, JS, Rust, Go, .net | Openapi, Grpc | Cosinus, Euclid, Dot | Dapat digunakan sebagai alat mandiri lokal, dalam memori atau persisten pada disk, tanpa untuk menggunakan layanan web |
| Milvus | Oktober 2019 | ~ 24K | Pergi | Python, JS, java, pergi | Openapi ❓️ | Cosinus, Euclid, Produk Dalam | alias. Zilliz Cloud |
| Chroma | Oktober 2022 | ~ 9k | Python | Python, JS | Openapi ❓️ | ||
| Weaviate | Maret 2016 | ~ 8k | Pergi | Python, JS, java, pergi | GraphQL API | Cosinus, Euclid | |
| pgvektor | April 2021 | ~ 6.5k | C | Melalui Postgres SDK ❓️ | SQL | Cosinus, Euclid, Produk Dalam, Taksi | Terintegrasi di PostgreSQL |
*Bahasa kueri/API Menentukan jenis bahasa atau API kueri mana yang dapat digunakan untuk menanyakan informasi di dalam database vektor
Semua produk itu open source, dan semuanya mengusulkan UI web sederhana untuk menjelajahi database vektor.
Sebagian besar dari mereka memiliki API modern dan sederhana (selain dari pgvektor yang hidup di dalam postgresql)
Benchmark referensi untuk model embeddings teks: https://huggingface.co/blog/mteb
Papan peringkat: https://huggingface.co/spaces/mteb/leaderboard
Model Embedding Populer:
bge-large-en-v1.5text-embedding-ada-002sentence-transformers/all-MiniLM-L6-v2jina-embeddings-v2-base-enembed-english-v3.0 Untuk didefinisikan.
Tolok ukur yang ada untuk database vektor:
Hasil awal pada 19/01/2024 (Sinonim Babel belum sepenuhnya dimuat, file yang hilang demi obat: gen, protein, organisme, jalur, UML): Sebagian besar masalah tampaknya diselesaikan selain dari "tikus" dan "ACP-044 Dosis A" (tidak ada waktu tetapi tidak ada hasil yang menarik))
Layanan Mulai:
docker compose up -d Masuk ke wadah workspace untuk menjalankan skrip pemuatan.
Unduh Sinonim Babel dan muat di VectorB:
make load(Eksperimental) memuat pubdiksi di pgvektor:
python src/pubdict_load.pylimit dengan benar dari vectorb (jika 2 hasil pertama dari vectordB berasal dari titik yang sama, maka kami hanya akan mengembalikan 1 hasil, yang tidak akan cocok dengan batas 2 yang diminta oleh pengguna)Solusi yang mungkin adalah menggunakan postgres dan pgvektor, dengan 2 tabel (satu untuk embeddings, satu untuk info konsep) tetapi itu akan membuat sistem jauh lebih kompleks daripada toko JSON.
Apakah ada vectorbb yang diselenggarakan sendiri yang dapat mendukung beberapa vektor yang tidak disebutkan namanya untuk satu poin? (Qdrant saat ini hanya mendukung beberapa vektor bernama yang tidak sesuai dengan kasus penggunaan kami)
Presentasi Pendahuluan: https://docs.google.com/presentation/d/1_ntmf-lthvybbvfusdxsdbeb0wm_yr_bvnnt-ivlktc/edit
Eksperimen pubdiksi: https://docs.google.com/document/d/1nipvy2zhzedmf5bjcuzcbgzifn22v9kpzfo4etxl89m/edit
Presentasi Kesimpulan: https://docs.google.com/presentation/d/1sjeuo4oegnmamtrvcawb0tzjzr9sgnyh-efwtjf99lg/edit
Paper Preprint Biohackrxiv: http://preview.biohackrxiv.org/papers/bdda0f94-f526-4f35-8768-8faf62d731fa/paper.pdf
Demo API: https://concept-resolver.137.120.31.102.nip.io