用途:在 Java/Spring Boot 环境中用 LangChain4j 搭建完整的 RAG 系统,让语言模型基于外部文档作答,提高准确性、减少幻觉。适用构建知识库问答、企业知识助手、文档语义搜索、需要来源引用与实时文档更新的场景。
主要能力:文档加载与递归切分(建议 500-1000 token,20-50 token 重叠);通过 EmbeddingModel 生成向量并存入 EmbeddingStore(示例用 InMemoryEmbeddingStore);配置 EmbeddingStoreContentRetriever 控制 maxResults、minScore;用 AiServices 配合 @SystemMessage 和 contentRetriever 构建可检索上下文的 AI 服务;支持多领域助手、@MemoryId、分层 RAG(先搜摘要再取文档块);可结合关键词与向量的混合搜索并重排。
使用方式:引入依赖 dev.langchain4j:langchain4j-spring-boot-starter 与 langchain4j-open-ai(文中版本 1.8.0),配置 OPENAI_API_KEY 与嵌入模型 text-embedding-3-small;定义 EmbeddingModel、EmbeddingStore Bean;用 FileSystemDocumentLoader 与 DocumentSplitters.recursive 摄取文档并写入元数据;再通过 EmbeddingStoreIngestor 或自定义服务完成嵌入与存储,最后用检索器增强问答。
限制与注意:资料未提供具体价格、部署平台、性能数据与完整工程配置;示例默认使用 OpenAI 嵌入模型,需自行提供 API Key;内存型嵌入存储不适合大规模数据;检索效果受切分粒度、嵌入模型与元数据过滤影响,可能需要重排、缓存与分页优化。
最佳实践:摄取时保留用户、租户、文档类别、时间戳、版本、访问级别等元数据;查询端做清洗与扩展、按用户上下文动态过滤、必要时重排;批量嵌入、缓存嵌入、异步处理长任务并定期清理无用向量。