プロセス内(ONNX)
LangChain4jは、ONNXランタイムを利用した、同じJavaプロセス内で実行されるローカルスコアリング(再ランキング)モデルを提供しています。
ONNX形式である限り、Hugging Faceなどの多くのモデルを使用できます。
モデルをONNX形式に変換する方法に関する情報はこちらで見つけることができます。
ONNX形式に既に変換された多くのモデルはこちらで利用可能です。
使用方法
デフォルトでは、スコアリング(再ランキング)モデルはCPUを使用します。
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-onnx-scoring</artifactId>
<version>1.0.0-beta4</version>
</dependency>
String pathToModel = "/home/langchain4j/model.onnx";
String pathToTokenizer = "/home/langchain4j/tokenizer.json";
OnnxScoringModel scoringModel = new OnnxScoringModel(pathToModel, pathToTokenizer);
Response<Double> response = scoringModel.score("query", "passage");
Double score = response.content();
GPUを使用したい場合は、onnxruntime_gpu
バージョンをこちらで見つけることができます。
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-onnx-scoring</artifactId>
<version>1.0.0-beta4</version>
<exclusions>
<exclusion>
<groupId>com.microsoft.onnxruntime</groupId>
<artifactId>onnxruntime</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 1.18.0はCUDA 12.xをサポート -->
<dependency>
<groupId>com.microsoft.onnxruntime</groupId>
<artifactId>onnxruntime_gpu</artifactId>
<version>1.18.0</version>
</dependency>
String pathToModel = "/home/langchain4j/model.onnx";
String pathToTokenizer = "/home/langchain4j/tokenizer.json";
OrtSession.SessionOptions options = new OrtSession.SessionOptions();
options.addCUDA(0);
OnnxScoringModel scoringModel = new OnnxScoringModel(pathToModel, options, pathToTokenizer);
Response<Double> response = scoringModel.score("query", "passage");
Double score = response.content();