Jlama
项目设置
要将 langchain4j 安装到您的项目中,请添加以下依赖项:
对于 Maven 项目 pom.xml
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.0.0-beta3</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-jlama</artifactId>
<version>1.0.0-beta3</version>
</dependency>
<dependency>
<groupId>com.github.tjake</groupId>
<artifactId>jlama-native</artifactId>
<!-- 用于更快的推理。支持 linux-x86_64, macos-x86_64/aarch_64, windows-x86_64
使用 https://github.com/trustin/os-maven-plugin 来检测操作系统和架构 -->
<classifier>${os.detected.name}-${os.detected.arch}</classifier>
<version>${jlama.version}</version> <!-- 版本来自 langchain4j-jlama pom -->
</dependency>
对于 Gradle 项目 build.gradle
implementation 'dev.langchain4j:langchain4j:1.0.0-beta3'
implementation 'dev.langchain4j:langchain4j-jlama:1.0.0-beta3'
嵌入
Jlama 嵌入模型允许您嵌入句子,在应用程序中使用它很简单。
我们提供了一个简单的示例,帮助您开始使用 Jlama 嵌入模型集成。
您可以使用来自 HuggingFace 的任何基于 bert
的模型,并使用 owner/model-name
格式指定它们。
创建一个类并添加以下代码。
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.jlama.JlamaEmbeddingModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingMatch;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import java.util.List;
public class HelloWorld {
public static void main(String[] args) {
EmbeddingModel embeddingModel = JlamaEmbeddingModel
.modelName("intfloat/e5-small-v2")
.build();
// 为简单起见,此示例使用内存存储,但您可以为生产环境选择任何外部兼容存储。
EmbeddingStore<TextSegment> embeddingStore = new InMemoryEmbeddingStore<>();
TextSegment segment1 = TextSegment.from("我喜欢足球。");
Embedding embedding1 = embeddingModel.embed(segment1).content();
embeddingStore.add(embedding1, segment1);
TextSegment segment2 = TextSegment.from("今天天气很好。");
Embedding embedding2 = embeddingModel.embed(segment2).content();
embeddingStore.add(embedding2, segment2);
String userQuery = "你最喜欢什么运动?";
Embedding queryEmbedding = embeddingModel.embed(userQuery).content();
EmbeddingSearchRequest searchRequest = EmbeddingSearchRequest.builder()
.queryEmbedding(queryEmbedding)
.maxResults(1)
.build();
EmbeddingSearchResult<TextSegment> searchResult = embeddingStore.search(searchRequest);
EmbeddingMatch<TextSegment> embeddingMatch = searchResult.matches().get(0);
System.out.println("问题: " + userQuery); // 你最喜欢什么运动?
System.out.println("回答: " + embeddingMatch.embedded().text()); // 我喜欢足球。
}
}
对于这个示例,我们将添加 2 个文本段,但 LangChain4j 提供了从各种来源加载文档的内置支持: 文件系统、URL、Amazon S3、Azure Blob Storage、GitHub、腾讯 COS。 此外,LangChain4j 支持解析多种文档类型: 文本、pdf、doc、xls、ppt。
输出将类似于:
问题: 你最喜欢什么运动?
回答: 我喜欢足球。
当然,您可以将 Jlama 嵌入与 RAG(检索增强生成)技术结合使用。
在 RAG 中,您将学习如何使用 LangChain4j 的 RAG 技术进行摄取、检索和高级检索。
许多参数在后台设置,如超时、模型类型和模型参数。 在 设置模型参数 中,您将学习如何明确设置这些参数。
更多示例
如果您想查看更多示例,可以在 langchain4j-examples 项目中找到它们。