diff --git a/packages/core/src/QueryEngine.ts b/packages/core/src/QueryEngine.ts index 8ea7378b35d9c6be6c18df4c88a9becc2bbc0c5d..e574c6cf5e110b8e8ac3228d890da05cee050e0b 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 422236c644f731bddfca79a6e9469a0a5eaa873e..54bd62e62c2c51072fec069f527c1bc993dffc24 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(