From 5dae534f8d88ff3d161f345a602e611c16e17ba0 Mon Sep 17 00:00:00 2001
From: Wassim Chegham <github@wassim.dev>
Date: Fri, 15 Nov 2024 20:16:32 +0100
Subject: [PATCH] fix: propagate queryStr to concrete vectorStore (#1495)

Co-authored-by: Alex Yang <himself65@outlook.com>
---
 .changeset/rare-olives-switch.md                     | 5 +++++
 packages/llamaindex/src/indices/vectorStore/index.ts | 9 ++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)
 create mode 100644 .changeset/rare-olives-switch.md

diff --git a/.changeset/rare-olives-switch.md b/.changeset/rare-olives-switch.md
new file mode 100644
index 000000000..b90a14af4
--- /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 994c73951..466f09657 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]!,
-- 
GitLab