Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,7 @@ dat-parent/
│ ├── dat-reranker-ms-marco-minilm-l6-v2-q/ # 【本地内置Reranking模型】
│ ├── dat-reranker-ms-marco-tinybert-l2-v2/ # 【本地内置Reranking模型】
│ ├── dat-reranker-ms-marco-tinybert-l2-v2-q/ # 【本地内置Reranking模型】
│ ├── dat-reranker-onnx-local/ # 【本地调用Reranking模型】
│ └── dat-reranker-jina/
├── 💾 dat-storers/ # 向量存储后端
│ ├── dat-storer-duckdb/ # 【本地内置向量存储】
Expand Down
11 changes: 11 additions & 0 deletions dat-cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -713,6 +713,17 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-reranker-onnx-local</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId>com.microsoft.onnxruntime</groupId>
<artifactId>onnxruntime</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</profile>

Expand Down
27 changes: 27 additions & 0 deletions dat-rerankers/dat-reranker-onnx-local/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>ai.dat</groupId>
<artifactId>dat-rerankers</artifactId>
<version>${revision}</version>
</parent>

<artifactId>dat-reranker-onnx-local</artifactId>
<name>DAT : Rerankers : In-process(ONNX) local</name>

<dependencies>
<dependency>
<groupId>ai.dat</groupId>
<artifactId>dat-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-onnx-scoring</artifactId>
<version>${langchain4j-beta.version}</version>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package ai.dat.reranker.onnx;

import ai.dat.core.configuration.ConfigOption;
import ai.dat.core.configuration.ConfigOptions;
import ai.dat.core.configuration.ReadableConfig;
import ai.dat.core.factories.ScoringModelFactory;
import ai.dat.core.utils.FactoryUtil;
import dev.langchain4j.model.scoring.ScoringModel;
import dev.langchain4j.model.scoring.onnx.OnnxScoringModel;

import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

/**
* @Author JunjieM
* @Date 2025/10/21
*/
public class OnnxScoringModelFactory implements ScoringModelFactory {

public static final String IDENTIFIER = "onnx";

public static final ConfigOption<String> MODEL_FILE_PATH =
ConfigOptions.key("model-file-path")
.stringType()
.noDefaultValue()
.withDescription("""
ONNX model file path, for example: /home/dat/model.onnx

Local scoring (reranking) models, powered by [ONNX runtime](https://onnxruntime.ai/docs/get-started/with-java.html), running in the same Java process.
Many models (e.g., from [Hugging Face](https://huggingface.co)) can be used, as long as they are in the ONNX format.
Information on how to convert models into ONNX format can be found [here](https://huggingface.co/docs/optimum-onnx/onnx/usage_guides/export_a_model).
Many models already converted to ONNX format are available [here](https://huggingface.co/Xenova).
""");

public static final ConfigOption<String> TOKENIZER_FILE_PATH =
ConfigOptions.key("tokenizer-file-path")
.stringType()
.noDefaultValue()
.withDescription("Tokenizer file path, for example: /home/dat/tokenizer.json");

@Override
public String factoryIdentifier() {
return IDENTIFIER;
}

@Override
public Set<ConfigOption<?>> requiredOptions() {
return new LinkedHashSet<>(List.of(MODEL_FILE_PATH, TOKENIZER_FILE_PATH));
}

@Override
public Set<ConfigOption<?>> optionalOptions() {
return Collections.emptySet();
}

@Override
public ScoringModel create(ReadableConfig config) {
FactoryUtil.validateFactoryOptions(this, config);

String modelFilePath = config.get(MODEL_FILE_PATH);
String tokenizerFilePath = config.get(TOKENIZER_FILE_PATH);

return new OnnxScoringModel(modelFilePath, tokenizerFilePath);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ai.dat.reranker.onnx.OnnxScoringModelFactory
1 change: 1 addition & 0 deletions dat-rerankers/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<module>dat-reranker-ms-marco-minilm-l6-v2-q</module>
<module>dat-reranker-ms-marco-tinybert-l2-v2</module>
<module>dat-reranker-ms-marco-tinybert-l2-v2-q</module>
<module>dat-reranker-onnx-local</module>
<module>dat-reranker-jina</module>
</modules>

Expand Down