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) {