queryAll method
Implementation
Future<VectorSpaceResult> queryAll(
List<String> queries, {
int maxResults = 100,
int compactQueriesTo = 10,
int maxTokens = 50000,
}) async {
int index = 0;
while (queries.length > compactQueriesTo) {
String out = queries.removeLast();
index %= queries.length;
queries[index] += ", $out";
}
int resultsPerQuery = (maxTokens / queries.length).floor();
if (resultsPerQuery < 1) {
throw Exception(
"Not enough tokens to process queries: $maxTokens / ${queries.length} < 1. Either increase max results or reduce compactQueriesTo below maxResults!",
);
}
return (await Future.wait(
queries.map((q) => query(q, maxResults: maxResults)),
))
.fold(
VectorSpaceResult(results: []),
(previousValue, element) => previousValue.mergeWith(element),
)
.baked(maxTokens: maxTokens, maxResults: maxResults);
}