このリポジトリには、本のセマンティックおよびフルテキスト検索エンジンを実行するためのコードとリソースが含まれています。 MARC21やOnix 3などの国際基準を使用して、テキストの埋め込みを利用し、さまざまなソースから本メタデータを収穫することをサポートします。
このアプリケーションは、テキスト埋め込みを生成し、 PGVectorをベクトルストアとしてPGVectorを使用して、Multilingual-E5-Smallを活用します。これにより、多言語セマンティック検索機能が提供されます。
次の手順に従って、アプリケーションを設定して実行します。
プロジェクトディレクトリで次のコマンドを実行します。
docker compose upこれにより、PGVectorが有効になってPostgreSQLデータベースが開始されます。
application.yamlを編集して、メタデータを収穫するための適切なゲートウェイとサービス-URIを選択して構成します。利用可能なオプション:
最初の実行には、必要な埋め込みモデルをダウンロードするため、時間がかかる場合があります。モデルが設置されると、アプリケーションの使用準備が整います。
./gradlew bootRunブラウザのhttp://localhost:8080にアクセスして、メタデータの収穫が進行するにつれて結果を視聴してください。セマンティック検索の場合、検索クエリを入力するか、ランダムな選択のために空白のままにします(最初の検索ヒットはランダムな選択であり、残りは意味的に類似した本になります)。フルテキスト検索の場合、検索クエリを入力します。
ゲートウェイは、外部サービスの詳細を抽象化し、メタデータを外部サービスから共通モデルに変換します。アプリケーションは、OAI-PMH(MARC21)、Bokbasen(Onix)、Bibbiの3つのゲートウェイをサポートしています。必要に応じてカスタムマッパーを実装し、 application.yamlで適切な値を構成することでアクティブにすることができます。
OAI-PMHゲートウェイは、メタデータ収穫用のOpen Archives Initiativeプロトコル(OAI-PMH)を使用してメタデータを収穫します。 MARC21形式の書誌データの取得をサポートしています。
Biblioteksentralen(https://www.bibsent.no/)からのoai-pmhの追加ドキュメント:
Bokbasen Gatewayは、公開業界で一般的に採用されているメタデータにOnix形式を使用しています。これは、大規模な本ベンダーからのデータを収穫するのに特に役立ちます。
BokbasenのOnixの追加ドキュメント(https://www.bokbasen.no/):
Bibbi Gatewayは、Bibbiメタデータサービスとの統合に使用されます。ゲートウェイは、schema.orgに基づいた形式を使用します。
Biblioteksentralen(https://www.bibsent.no/)からのBibbiの追加ドキュメント:
書評のマルチラベル分類のためのBERTベースのモデルを微調整するためのデータセットを抽出するための手順:https://github.com/torleifg/book-reviews-genre-classification
psql -h localhost -p 5433 -U username -d postgresジャンルを使用してラベルとしてフォームを使用してデータセットの例を抽出します。
copy (
select
concat(metadata ->>'title', '. ', metadata ->>'description') as text,
metadata ->>'genreAndForm' as labels
from
book
where
metadata->>'description' is not null
and metadata->>'description' <> ''
and length(metadata->>'description') > 200
and metadata->>'genreAndForm' is not null
and metadata->>'genreAndForm' <> '[]'
) to '~/dataset.csv' with csv header delimiter ';';