Skip to content

Commit ae4ff6b

Browse files
committed
fix: Fixed concatenation of chunks in the DocumentRetrieverService
1 parent 84e24c7 commit ae4ff6b

File tree

2 files changed

+55
-31
lines changed

2 files changed

+55
-31
lines changed

src/store/DocumentRetrieverService.test.ts

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,12 @@ describe("DocumentRetrieverService", () => {
101101
);
102102

103103
expect(results).toEqual([
104-
{ content: "Parent content", url: "url" },
105-
{ content: "Preceding sibling 1", url: "url" },
106-
{ content: "Initial content", url: "url" },
107-
{ content: "Child 1 content", url: "url" },
108-
{ content: "Subsequent sibling 1", url: "url" },
104+
{
105+
content:
106+
"Parent content\n\nPreceding sibling 1\n\nInitial content\n\nChild 1 content\n\nSubsequent sibling 1",
107+
url: "url",
108+
score: undefined,
109+
},
109110
]);
110111
});
111112

@@ -148,10 +149,12 @@ describe("DocumentRetrieverService", () => {
148149
const results = await retrieverService.search(library, version, query);
149150

150151
expect(results).toEqual([
151-
{ content: "Preceding sibling 1", url: "url" },
152-
{ content: "Initial content", url: "url" },
153-
{ content: "Child 1 content", url: "url" },
154-
{ content: "Subsequent sibling 1", url: "url" },
152+
{
153+
content:
154+
"Preceding sibling 1\n\nInitial content\n\nChild 1 content\n\nSubsequent sibling 1",
155+
url: "url",
156+
score: undefined,
157+
},
155158
]);
156159
});
157160

@@ -192,10 +195,12 @@ describe("DocumentRetrieverService", () => {
192195
const results = await retrieverService.search(library, version, query);
193196

194197
expect(results).toEqual([
195-
{ content: "Parent content", url: "url" },
196-
{ content: "Initial content", url: "url" },
197-
{ content: "Child 1 content", url: "url" },
198-
{ content: "Subsequent sibling 1", url: "url" },
198+
{
199+
content:
200+
"Parent content\n\nInitial content\n\nChild 1 content\n\nSubsequent sibling 1",
201+
url: "url",
202+
score: undefined,
203+
},
199204
]);
200205
});
201206

@@ -238,10 +243,12 @@ describe("DocumentRetrieverService", () => {
238243
const results = await retrieverService.search(library, version, query);
239244

240245
expect(results).toEqual([
241-
{ content: "Parent content", url: "url" },
242-
{ content: "Preceding sibling 1", url: "url" },
243-
{ content: "Initial content", url: "url" },
244-
{ content: "Subsequent sibling 1", url: "url" },
246+
{
247+
content:
248+
"Parent content\n\nPreceding sibling 1\n\nInitial content\n\nSubsequent sibling 1",
249+
url: "url",
250+
score: undefined,
251+
},
245252
]);
246253
});
247254

@@ -282,10 +289,12 @@ describe("DocumentRetrieverService", () => {
282289
const results = await retrieverService.search(library, version, query);
283290

284291
expect(results).toEqual([
285-
{ content: "Parent content", url: "url" },
286-
{ content: "Preceding sibling 1", url: "url" },
287-
{ content: "Initial content", url: "url" },
288-
{ content: "Child 1 content", url: "url" },
292+
{
293+
content:
294+
"Parent content\n\nPreceding sibling 1\n\nInitial content\n\nChild 1 content",
295+
url: "url",
296+
score: undefined,
297+
},
289298
]);
290299
});
291300

@@ -316,8 +325,16 @@ describe("DocumentRetrieverService", () => {
316325
const results = await retrieverService.search(library, version, query);
317326

318327
expect(results).toEqual([
319-
{ content: "Initial content 1", url: "url" },
320-
{ content: "Initial content 2", url: "url" },
328+
{
329+
content: "Initial content 1",
330+
url: "url",
331+
score: undefined,
332+
},
333+
{
334+
content: "Initial content 2",
335+
url: "url",
336+
score: undefined,
337+
},
321338
]);
322339
});
323340

@@ -372,11 +389,12 @@ describe("DocumentRetrieverService", () => {
372389
limit,
373390
); // Verify limit is passed to findByContent
374391
expect(results).toEqual([
375-
{ content: "Parent content", url: "url" },
376-
{ content: "Preceding sibling 1", url: "url" },
377-
{ content: "Initial content", url: "url" },
378-
{ content: "Child 1 content", url: "url" },
379-
{ content: "Subsequent sibling 1", url: "url" },
392+
{
393+
content:
394+
"Parent content\n\nPreceding sibling 1\n\nInitial content\n\nChild 1 content\n\nSubsequent sibling 1",
395+
url: "url",
396+
score: undefined,
397+
},
380398
]);
381399
});
382400
});

src/store/DocumentRetrieverService.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ export class DocumentRetrieverService {
5151
id,
5252
SIBLING_LIMIT,
5353
);
54-
content += `${precedingSiblings.map((d) => d.pageContent).join("\n\n")}\n\n`;
54+
if (precedingSiblings.length > 0) {
55+
content += `${precedingSiblings.map((d) => d.pageContent).join("\n\n")}\n\n`;
56+
}
5557

5658
// Initial Result
5759
content += `${doc.pageContent}`;
@@ -63,7 +65,9 @@ export class DocumentRetrieverService {
6365
id,
6466
CHILD_LIMIT,
6567
);
66-
content += `\n\n${childChunks.map((d) => d.pageContent).join("\n\n")}`;
68+
if (childChunks.length > 0) {
69+
content += `\n\n${childChunks.map((d) => d.pageContent).join("\n\n")}`;
70+
}
6771

6872
// Subsequent Siblings
6973
const subsequentSiblings = await this.documentStore.findSubsequentSiblingChunks(
@@ -72,7 +76,9 @@ export class DocumentRetrieverService {
7276
id,
7377
SIBLING_LIMIT,
7478
);
75-
content += `\n\n${subsequentSiblings.map((d) => d.pageContent).join("\n\n")}`;
79+
if (subsequentSiblings.length > 0) {
80+
content += `\n\n${subsequentSiblings.map((d) => d.pageContent).join("\n\n")}`;
81+
}
7682

7783
results.push({
7884
url: doc.metadata.url,

0 commit comments

Comments
 (0)