引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></parent><groupId>org.example</groupId><artifactId>langchain4j-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId><version>0.29.1</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-qianfan</artifactId><version>0.30.0</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>0.29.1</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-zhipu-ai</artifactId><version>0.29.1</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-dashscope</artifactId><version>0.29.1</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-ollama</artifactId><version>0.29.1</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId><version>0.29.1</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-pgvector</artifactId><version>0.29.0</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-elasticsearch</artifactId><version>0.29.0</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-redis</artifactId><version>0.29.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
</project>
示例代码
package org.example;import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.AllMiniLmL6V2EmbeddingModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.model.output.Response;
import dev.langchain4j.store.embedding.EmbeddingMatch;
import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
import dev.langchain4j.store.embedding.EmbeddingSearchResult;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.elasticsearch.ElasticsearchEmbeddingStore;public class EsMain {public static void main(String[] args) {TextSegment textSegment = TextSegment.from("我爱吃苹果");EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();Response<Embedding> embed = embeddingModel.embed(textSegment);ElasticsearchEmbeddingStore embeddingStore = ElasticsearchEmbeddingStore.builder().serverUrl("http://192.11.2.1:29201").indexName("vector_index").dimension(embed.content().dimension()).userName("elastic").password("1231230").build();embeddingStore.add(embed.content(), textSegment);TextSegment queryTextSegment = TextSegment.from("我喜欢吃苹果");Embedding queryEmbedding = embeddingModel.embed(queryTextSegment).content();EmbeddingSearchRequest request = EmbeddingSearchRequest.builder().queryEmbedding(queryEmbedding).maxResults(3).minScore(0.1).build();EmbeddingSearchResult<TextSegment> result = embeddingStore.search(request);for (EmbeddingMatch<TextSegment> match : result.matches()) {System.out.println(match.embedded().text());System.out.println(match.score());}}
}