Skip to content

Commit 74db777

Browse files
committed
Fix vector search tests
1 parent 064b279 commit 74db777

File tree

2 files changed

+52
-16
lines changed

2 files changed

+52
-16
lines changed

test/search_test.dart

+27-11
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import 'utils/client.dart';
77
import 'utils/wait_for.dart';
88

99
void main() {
10+
final openAiKeyValue = openAiKey;
11+
1012
group('Search', () {
1113
setUpClient();
1214
late String uid;
@@ -545,44 +547,58 @@ void main() {
545547
setUpClient();
546548
late String uid;
547549
late MeiliSearchIndex index;
550+
late IndexSettings settings;
551+
552+
setUpAll(() {
553+
settings = IndexSettings(embedders: {
554+
'default': OpenAiEmbedder(
555+
model: 'text-embedding-3-small',
556+
apiKey: openAiKeyValue,
557+
documentTemplate: "a book titled '{{ doc.title }}'",
558+
),
559+
});
560+
});
561+
548562
setUp(() async {
549563
uid = randomUid();
550564
index = await createIndexWithData(uid: uid, data: vectorBooks);
565+
// Configure embedder before running vector search
566+
await index.updateSettings(settings).waitFor(client: client);
551567
});
552568

553569
test('vector search', () async {
554-
final vector = [0, 1, 2];
570+
// Create a vector with 1536 dimensions (filled with zeros for test purposes)
571+
final vector = List.filled(1536, 0.0);
555572
final res = await index
556573
.search(
557574
null,
558575
SearchQuery(
559576
vector: vector,
577+
hybrid: HybridSearch(
578+
embedder: 'default',
579+
semanticRatio: 1.0,
580+
),
560581
),
561582
)
562583
.asSearchResult()
563584
.mapToContainer();
564585

565-
expect(res.vector, vector);
566586
expect(
567587
res.hits,
568588
everyElement(
569589
isA<MeiliDocumentContainer<Map<String, dynamic>>>()
570590
.having(
571-
(p0) => p0.vectors,
572-
'vectors',
573-
isNotNull,
574-
)
575-
.having(
576-
(p0) => p0.semanticScore,
577-
'semanticScore',
591+
(p0) => p0.parsed,
592+
'parsed',
578593
isNotNull,
579594
),
580595
),
581596
);
582597
});
583-
});
598+
}, skip: openAiKeyValue == null || openAiKeyValue.isEmpty
599+
? "Requires OPEN_AI_API_KEY environment variable"
600+
: null);
584601

585-
final openAiKeyValue = openAiKey;
586602
group('Embedders', () {
587603
group(
588604
'Unit test',

test/utils/books_data.dart

+25-5
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,43 @@ final vectorBooks = [
6060
{
6161
"id": 0,
6262
"title": "Across The Universe",
63-
"_vectors": [0, 0.8, -0.2],
63+
"_vectors": {
64+
"default": {
65+
"embeddings": [0, 0.8, -0.2],
66+
"regenerate": false,
67+
}
68+
}
6469
},
6570
{
6671
"id": 1,
6772
"title": "All Things Must Pass",
68-
"_vectors": [1, -0.2, 0],
73+
"_vectors": {
74+
"default": {
75+
"embeddings": [1, -0.2, 0],
76+
"regenerate": false,
77+
}
78+
}
6979
},
7080
{
7181
"id": 2,
7282
"title": "And Your Bird Can Sing",
73-
"_vectors": [-0.2, 4, 6],
83+
"_vectors": {
84+
"default": {
85+
"embeddings": [-0.2, 4, 6],
86+
"regenerate": false,
87+
}
88+
}
7489
},
7590
{
7691
"id": 3,
7792
"title": "The Matrix",
78-
"_vectors": [5, -0.5, 0.3],
79-
},
93+
"_vectors": {
94+
"default": {
95+
"embeddings": [5, -0.5, 0.3],
96+
"regenerate": false,
97+
}
98+
},
99+
}
80100
];
81101

82102
enum CSVHeaderTypes {

0 commit comments

Comments
 (0)