最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

聊聊langchain4j的RagAutoConfig

网站源码admin5浏览0评论

聊聊langchain4j的RagAutoConfig

本文主要研究一下langchain4j-spring-boot-starter的RagAutoConfig

LangChain4jAutoConfig

dev/langchain4j/spring/LangChain4jAutoConfig.java

代码语言:javascript代码运行次数:0运行复制
@AutoConfiguration
@Import({
        AiServicesAutoConfig.class,
        RagAutoConfig.class,
        AiServiceScannerProcessor.class
})
public class LangChain4jAutoConfig {
}

LangChain4jAutoConfig自动import了AiServicesAutoConfig、RagAutoConfig、AiServiceScannerProcessor

RagAutoConfig

dev/langchain4j/rag/spring/RagAutoConfig.java

代码语言:javascript代码运行次数:0运行复制
@EnableConfigurationProperties(RagProperties.class)
public class RagAutoConfig {

    // TODO make these beans lazy?

    @Bean
    @ConditionalOnMissingBean
    EmbeddingStore<TextSegment> embeddingStore() { // TODO bean name, type
        return new InMemoryEmbeddingStore<>();
    }

    @Bean
    @ConditionalOnBean({
            EmbeddingModel.class,
            EmbeddingStore.class
    })
    @ConditionalOnMissingBean
    ContentRetriever contentRetriever(EmbeddingModel embeddingModel,
                                      EmbeddingStore<TextSegment> embeddingStore,
                                      RagProperties ragProperties) {  // TODO bean name, type

        EmbeddingStoreContentRetriever.EmbeddingStoreContentRetrieverBuilder builder = EmbeddingStoreContentRetriever.builder()
                .embeddingStore(embeddingStore)
                .embeddingModel(embeddingModel);

        if (ragProperties != null) {
            RetrievalProperties retrievalProperties = ragProperties.retrieval();
            if (retrievalProperties != null) {
                builder
                        .maxResults(retrievalProperties.maxResults())
                        .minScore(retrievalProperties.minScore());
            }
        }

        return builder.build();
    }

    // TODO test
}

RagAutoConfig默认注册了InMemoryEmbeddingStore、ContentRetriever

RagProperties

dev/langchain4j/rag/spring/RagProperties.java

代码语言:javascript代码运行次数:0运行复制
@ConfigurationProperties(prefix = RagProperties.PREFIX)
public record RagProperties(@NestedConfigurationProperty RetrievalProperties retrieval) {
    static final String PREFIX = "langchain4j.rag";

}

RagProperties是record类型,它有个嵌套的配置属性为retrieval,类型为RetrievalProperties

RetrievalProperties

代码语言:javascript代码运行次数:0运行复制
record RetrievalProperties(Integer maxResults, Double minScore) {
}

RetrievalProperties是个record类型,定义了maxResults、minScore属性

小结

langchain4j-spring-boot-starter的RagAutoConfig自动注入了InMemoryEmbeddingStore、ContentRetriever,其中EmbeddingStoreContentRetriever会根据ragProperties的retrievalProperties来设置EmbeddingStoreContentRetriever的maxResults及minScore。

doc

  • langchain4j-spring
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-13,如有侵权请联系 cloudcommunity@tencent 删除builderclassrecord配置spring

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论