前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >聊聊langchain4j的RagAutoConfig

聊聊langchain4j的RagAutoConfig

作者头像
code4it
发布2025-03-13 21:56:19
发布2025-03-13 21:56:19
3000
代码可运行
举报
文章被收录于专栏:码匠的流水账码匠的流水账
运行总次数:0
代码可运行

本文主要研究一下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.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LangChain4jAutoConfig
  • RagAutoConfig
  • RagProperties
  • RetrievalProperties
  • 小结
  • doc
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档