diff --git a/apps/simple/listIndex.ts b/apps/simple/listIndex.ts index 5b7a5203b36431a07ce367016d3f144dce13748d..8ada0b32d06e6d91af370163ad1f74652ae73975 100644 --- a/apps/simple/listIndex.ts +++ b/apps/simple/listIndex.ts @@ -1,11 +1,11 @@ import { Document } from "@llamaindex/core/src/Node"; -import { ListIndex } from "@llamaindex/core/src/index/list"; +import { ListIndex, ListRetrieverMode } from "@llamaindex/core/src/index/list"; import essay from "./essay"; async function main() { const document = new Document({ text: essay }); const index = await ListIndex.fromDocuments([document]); - const queryEngine = index.asQueryEngine(); + const queryEngine = index.asQueryEngine(ListRetrieverMode.LLM); const response = await queryEngine.aquery( "What did the author do growing up?" ); diff --git a/packages/core/src/index/list/ListIndex.ts b/packages/core/src/index/list/ListIndex.ts index dcf7925c94d7dd78f036f7082b4aa6861d13a977..1b9026b9db21cf1a4d31b840b474bb1542b6183d 100644 --- a/packages/core/src/index/list/ListIndex.ts +++ b/packages/core/src/index/list/ListIndex.ts @@ -6,7 +6,10 @@ import { storageContextFromDefaults, } from "../../storage/StorageContext"; import { BaseRetriever } from "../../Retriever"; -import { ListIndexRetriever } from "./ListIndexRetriever"; +import { + ListIndexRetriever, + ListIndexLLMRetriever, +} from "./ListIndexRetriever"; import { ServiceContext, serviceContextFromDefaults, @@ -98,7 +101,7 @@ export class ListIndex extends BaseIndex<IndexList> { case ListRetrieverMode.DEFAULT: return new ListIndexRetriever(this); case ListRetrieverMode.LLM: - throw new Error(`Support for LLM retriever mode is not implemented`); + return new ListIndexLLMRetriever(this); default: throw new Error(`Unknown retriever mode: ${mode}`); } @@ -107,7 +110,7 @@ export class ListIndex extends BaseIndex<IndexList> { asQueryEngine( mode: ListRetrieverMode = ListRetrieverMode.DEFAULT ): BaseQueryEngine { - return new RetrieverQueryEngine(this.asRetriever()); + return new RetrieverQueryEngine(this.asRetriever(mode)); } static async _buildIndexFromNodes( diff --git a/packages/core/src/index/list/utils.ts b/packages/core/src/index/list/utils.ts index b7a1d3f8fddc0af2c587ef1db2c8ff0db01dbfce..ec248514b89be7ad1962d7ae8f98005706833e86 100644 --- a/packages/core/src/index/list/utils.ts +++ b/packages/core/src/index/list/utils.ts @@ -57,9 +57,9 @@ export const defaultParseChoiceSelectAnswerFn: ChoiceSelectParserFunction = ( throw new Error( `Invalid answer number: ${docNum}. Answer number must be between 1 and ${numChoices}` ); - } else { - parseResult[docNum] = answerRelevance; } + } else { + parseResult[docNum] = answerRelevance; } } catch (e) { if (raiseErr) { diff --git a/packages/core/src/storage/docStore/utils.ts b/packages/core/src/storage/docStore/utils.ts index 3df1c1b3039d5649e02a25c073a004b9675287d9..2734200268b388989d35866149579c89d28096a0 100644 --- a/packages/core/src/storage/docStore/utils.ts +++ b/packages/core/src/storage/docStore/utils.ts @@ -12,7 +12,7 @@ export function docToJson(doc: BaseNode): Record<string, any> { export function jsonToDoc(docDict: Record<string, any>): BaseNode { let docType = docDict[TYPE_KEY]; - let dataDict = docDict[DATA_KEY]; + let dataDict = JSON.parse(docDict[DATA_KEY]); let doc: BaseNode; if (docType === ObjectType.DOCUMENT) {