diff --git a/.changeset/slow-adults-nail.md b/.changeset/slow-adults-nail.md new file mode 100644 index 0000000000000000000000000000000000000000..b48f661eb1be00343ff5a9922c4f97403ae1b665 --- /dev/null +++ b/.changeset/slow-adults-nail.md @@ -0,0 +1,5 @@ +--- +"llamaindex": patch +--- + +feat: add top k to `asQueryEngine` diff --git a/packages/core/src/indices/vectorStore/index.ts b/packages/core/src/indices/vectorStore/index.ts index 7450c233d2dc70a4a1c100b468b55f3669302bf5..b81d897afc09637321f5865187a200c16dd02050 100644 --- a/packages/core/src/indices/vectorStore/index.ts +++ b/packages/core/src/indices/vectorStore/index.ts @@ -279,18 +279,29 @@ export class VectorStoreIndex extends BaseIndex<IndexDict> { return new VectorIndexRetriever({ index: this, ...options }); } + /** + * Create a RetrieverQueryEngine. + * similarityTopK is only used if no existing retriever is provided. + */ asQueryEngine(options?: { retriever?: BaseRetriever; responseSynthesizer?: BaseSynthesizer; preFilters?: MetadataFilters; nodePostprocessors?: BaseNodePostprocessor[]; + similarityTopK?: number; }): QueryEngine & RetrieverQueryEngine { - const { retriever, responseSynthesizer } = options ?? {}; + const { + retriever, + responseSynthesizer, + preFilters, + nodePostprocessors, + similarityTopK, + } = options ?? {}; return new RetrieverQueryEngine( - retriever ?? this.asRetriever(), + retriever ?? this.asRetriever({ similarityTopK }), responseSynthesizer, - options?.preFilters, - options?.nodePostprocessors, + preFilters, + nodePostprocessors, ); }