From 5cdab4e311bf7f6cd923f60d029e90868570aa30 Mon Sep 17 00:00:00 2001
From: Sourabh Desai <sourabhdesai@gmail.com>
Date: Tue, 18 Jul 2023 02:08:22 +0000
Subject: [PATCH] make ListIndex query engine use CompactAndRefine response
 builder by default

---
 packages/core/src/QueryEngine.ts          |  8 ++++++--
 packages/core/src/index/list/ListIndex.ts | 19 +++++++++++++++++--
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/packages/core/src/QueryEngine.ts b/packages/core/src/QueryEngine.ts
index 8ea7378b3..e574c6cf5 100644
--- a/packages/core/src/QueryEngine.ts
+++ b/packages/core/src/QueryEngine.ts
@@ -26,11 +26,15 @@ export class RetrieverQueryEngine implements BaseQueryEngine {
   retriever: BaseRetriever;
   responseSynthesizer: ResponseSynthesizer;
 
-  constructor(retriever: BaseRetriever) {
+  constructor(
+    retriever: BaseRetriever,
+    responseSynthesizer?: ResponseSynthesizer
+  ) {
     this.retriever = retriever;
     const serviceContext: ServiceContext | undefined =
       this.retriever.getServiceContext();
-    this.responseSynthesizer = new ResponseSynthesizer({ serviceContext });
+    this.responseSynthesizer =
+      responseSynthesizer || new ResponseSynthesizer({ serviceContext });
   }
 
   async aquery(query: string, parentEvent?: Event) {
diff --git a/packages/core/src/index/list/ListIndex.ts b/packages/core/src/index/list/ListIndex.ts
index 422236c64..54bd62e62 100644
--- a/packages/core/src/index/list/ListIndex.ts
+++ b/packages/core/src/index/list/ListIndex.ts
@@ -16,6 +16,10 @@ import {
 } from "../../ServiceContext";
 import { BaseDocumentStore, RefDocInfo } from "../../storage/docStore/types";
 import _ from "lodash";
+import {
+  ResponseSynthesizer,
+  CompactAndRefine,
+} from "../../ResponseSynthesizer";
 
 export enum ListRetrieverMode {
   DEFAULT = "default",
@@ -112,9 +116,20 @@ export class ListIndex extends BaseIndex<IndexList> {
   }
 
   asQueryEngine(
-    mode: ListRetrieverMode = ListRetrieverMode.DEFAULT
+    mode: ListRetrieverMode = ListRetrieverMode.DEFAULT,
+    responseSynthesizer?: ResponseSynthesizer
   ): BaseQueryEngine {
-    return new RetrieverQueryEngine(this.asRetriever(mode));
+    if (_.isNil(responseSynthesizer)) {
+      let responseBuilder = new CompactAndRefine(this.serviceContext);
+      responseSynthesizer = new ResponseSynthesizer({
+        serviceContext: this.serviceContext,
+        responseBuilder,
+      });
+    }
+    return new RetrieverQueryEngine(
+      this.asRetriever(mode),
+      responseSynthesizer
+    );
   }
 
   static async _buildIndexFromNodes(
-- 
GitLab