Skip to content

Commit 6bdad50

Browse files
committed
Add support for defining generative config at query-time (dynamic RAG)
1 parent e6b2870 commit 6bdad50

File tree

11 files changed

+1190
-253
lines changed

11 files changed

+1190
-253
lines changed

.github/workflows/main.yaml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ on:
88

99
env:
1010
WEAVIATE_124: 1.24.26
11-
WEAVIATE_125: 1.25.30
12-
WEAVIATE_126: 1.26.14
13-
WEAVIATE_127: 1.27.11
14-
WEAVIATE_128: 1.28.4
11+
WEAVIATE_125: 1.25.34
12+
WEAVIATE_126: 1.26.17
13+
WEAVIATE_127: 1.27.14
14+
WEAVIATE_128: 1.28.8
1515
WEAVIATE_129: 1.29.0
16+
WEAVIATE_130: 1.30.0-dev-680e323
1617

1718
jobs:
1819
checks:
@@ -43,7 +44,8 @@ jobs:
4344
{ node: "22.x", weaviate: $WEAVIATE_128},
4445
{ node: "18.x", weaviate: $WEAVIATE_129},
4546
{ node: "20.x", weaviate: $WEAVIATE_129},
46-
{ node: "22.x", weaviate: $WEAVIATE_129}
47+
{ node: "22.x", weaviate: $WEAVIATE_129},
48+
{ node: "22.x", weaviate: $WEAVIATE_130}
4749
]
4850
steps:
4951
- uses: actions/checkout@v3

src/collections/deserialize/index.ts

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import {
2525
AggregateResult,
2626
AggregateText,
2727
AggregateType,
28+
GenerativeConfigRuntime,
29+
GenerativeMetadata,
2830
PropertiesMetrics,
2931
} from '../index.js';
3032
import { referenceFromObjects } from '../references/utils.js';
@@ -207,19 +209,43 @@ export class Deserialize {
207209
};
208210
}
209211

210-
public generate<T>(reply: SearchReply): GenerativeReturn<T> {
212+
public generate<T, C extends GenerativeConfigRuntime | undefined>(
213+
reply: SearchReply
214+
): GenerativeReturn<T, C> {
211215
return {
212216
objects: reply.results.map((result) => {
213217
return {
214-
generated: result.metadata?.generativePresent ? result.metadata?.generative : undefined,
218+
generated: result.metadata?.generativePresent
219+
? result.metadata?.generative
220+
: result.generative
221+
? result.generative.values[0].result
222+
: undefined,
223+
generative: result.generative
224+
? {
225+
text: result.generative.values[0].result,
226+
debug: result.generative.values[0].debug,
227+
metadata: result.generative.values[0].metadata as GenerativeMetadata<C>,
228+
}
229+
: undefined,
215230
metadata: Deserialize.metadata(result.metadata),
216231
properties: this.properties(result.properties),
217232
references: this.references(result.properties),
218233
uuid: Deserialize.uuid(result.metadata),
219234
vectors: Deserialize.vectors(result.metadata),
220235
} as any;
221236
}),
222-
generated: reply.generativeGroupedResult,
237+
generated:
238+
reply.generativeGroupedResult !== ''
239+
? reply.generativeGroupedResult
240+
: reply.generativeGroupedResults
241+
? reply.generativeGroupedResults.values[0].result
242+
: undefined,
243+
generative: reply.generativeGroupedResults
244+
? {
245+
text: reply.generativeGroupedResults?.values[0].result,
246+
metadata: reply.generativeGroupedResults?.values[0].metadata as GenerativeMetadata<C>,
247+
}
248+
: undefined,
223249
};
224250
}
225251

@@ -252,9 +278,9 @@ export class Deserialize {
252278
};
253279
}
254280

255-
public generateGroupBy<T>(reply: SearchReply): GenerativeGroupByReturn<T> {
281+
public generateGroupBy<T>(reply: SearchReply): GenerativeGroupByReturn<T, any> {
256282
const objects: GroupByObject<T>[] = [];
257-
const groups: Record<string, GenerativeGroupByResult<T>> = {};
283+
const groups: Record<string, GenerativeGroupByResult<T, any>> = {};
258284
reply.groupByResults.forEach((result) => {
259285
const objs = result.objects.map((object) => {
260286
return {

0 commit comments

Comments
 (0)