rag - 文档查询条件
QueryCondition 查询条件:
属性 | 默认值 | 描述 |
---|---|---|
freshness | 热度(时间范围) | |
limit | 限制条数 | |
filterExpression | 过滤表达式(对元数据字段进行过滤,语法参考 SnEL) | |
similarityThreshold | 0.4 | 相似度阈值 |
disableRefilter | false | 禁用搜索后再次本地过滤 |
searchType | VECTOR | 搜索类型(仅 es 支持) |
hybridSearchParams | 混合搜索参数(仅 es 支持) |
使用参考
// 创建元数据字段定义
List<MetadataField> metadataFields = new ArrayList<>();
metadataFields.add(MetadataField.keyword("url"));
metadataFields.add(MetadataField.keyword("category"));
metadataFields.add(MetadataField.numeric("priority"));
metadataFields.add(MetadataField.numeric("year"));
// 使用 Builder 模式创建Repository
repository = ElasticsearchRepository.builder(embeddingModel, client)
.metadataFields(metadataFields)
.build();
repository.insert(Arrays.as(new Document("solon ....", Utils.asMap("url", "https://solon.noear.org", ...))));
//构建查询条件
QueryCondition vectorFilteredCondition = new QueryCondition("solon framework")
.filterExpression("url LIKE 'noear.org'"); //对元数据字段 url 进行过滤
//查询
List<Document> vectorFilteredResults = repository.search(vectorFilteredCondition);