该存储库包含代码和资源来运行书籍的语义和全文搜索引擎。它使用文本嵌入,并使用MARC21和Onix 3等国际标准来支持从各种来源收获书元数据。
该应用程序利用多语言 - e5-small来生成文本嵌入和以pgvector作为矢量存储的邮政嵌入。这提供了多语种语义搜索功能。
请按照以下步骤设置并运行应用程序:
在项目目录中运行以下命令:
docker compose up这将在启用PGVector启用PostgreSQL数据库中。
通过编辑application.yaml选择并配置适当的网关和Service-uri,以收集元数据。可用选项:
首次运行可能需要一些时间,因为它将下载必要的嵌入模型。一旦模型到位,应用程序就可以使用。
./gradlew bootRun访问http://localhost:8080在浏览器中,并随着元数据收获的进展,观看结果。对于语义搜索,输入搜索查询或将其留为空白以进行随机选择(第一个搜索命中将是随机选择,其余的将是语义上相似的书籍)。有关全文搜索,请输入搜索查询。
网关将外部服务的详细信息抽象出来,并将元数据从外部服务转变为通用模型。该应用程序支持三个网关:OAI-PMH(MARC21),Bokbasen(Onix)和Bibbi。可以根据需要实现自定义映射器,并通过在application.yaml中配置适当的值来激活。
OAI-PMH Gateway使用开放式档案倡议协议(OAI-PMH)收获元数据。它支持以MARC21格式检索书目数据。
来自Biblioteksentralen(https://www.bibsent.no/)的OAI-PMH的其他文档:
Bokbasen Gateway使用出版行业通常使用的元数据的ONIX格式。这对于从大型书籍供应商那里收集数据特别有用。
Bokbasen(https://www.bokbasen.no/)的Onix的其他文档:
Bibbi网关用于与Bibbi元数据服务集成。网关使用基于schema.org的格式。
Biblioteksentralen(https://www.bibsent.no/)的Bibbi的其他文档:
提取数据集用于微调基于BERT的模型的说明
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 ';';