diff --git a/.changeset/rare-olives-switch.md b/.changeset/rare-olives-switch.md new file mode 100644 index 0000000000000000000000000000000000000000..b90a14af4f86e52f2f8f4177dde808c955fb2353 --- /dev/null +++ b/.changeset/rare-olives-switch.md @@ -0,0 +1,5 @@ +--- +"llamaindex": patch +--- + +fix: propagate queryStr to concrete vectorStore diff --git a/packages/llamaindex/src/indices/vectorStore/index.ts b/packages/llamaindex/src/indices/vectorStore/index.ts index 994c73951aac4dfc9e558caa3010fd7330c4aa27..466f09657e6676688d899cfbe28acb39a9d443e6 100644 --- a/packages/llamaindex/src/indices/vectorStore/index.ts +++ b/packages/llamaindex/src/indices/vectorStore/index.ts @@ -18,6 +18,7 @@ import { type NodeWithScore, } from "@llamaindex/core/schema"; import type { BaseIndexStore } from "@llamaindex/core/storage/index-store"; +import { extractText } from "@llamaindex/core/utils"; import type { ServiceContext } from "../../ServiceContext.js"; import { nodeParserFromSettingsOrContext } from "../../Settings.js"; import { RetrieverQueryEngine } from "../../engines/query/RetrieverQueryEngine.js"; @@ -449,8 +450,13 @@ export class VectorIndexRetriever extends BaseRetriever { filters?: MetadataFilters, ): Promise<NodeWithScore[]> { // convert string message to multi-modal format + + let queryStr = query; if (typeof query === "string") { - query = [{ type: "text", text: query }]; + queryStr = query; + query = [{ type: "text", text: queryStr }]; + } else { + queryStr = extractText(query); } // overwrite embed model if specified, otherwise use the one from the vector store const embedModel = this.index.embedModel ?? vectorStore.embedModel; @@ -460,6 +466,7 @@ export class VectorIndexRetriever extends BaseRetriever { const queryEmbedding = await embedModel.getQueryEmbedding(item); if (queryEmbedding) { const result = await vectorStore.query({ + queryStr, queryEmbedding, mode: VectorStoreQueryMode.DEFAULT, similarityTopK: this.topK[type]!,