Skip to content

Commit 11a76bc

Browse files
meili-bors[bot]meili-botStrift
authored
Merge #408
408: Changes related to the next Meilisearch release (v1.13) r=Strift a=meili-bot Related to this issue: meilisearch/integration-guides#314 This PR: - gathers the changes related to the next Meilisearch release (v1.13) so that this package is ready when the official release is out. - should pass the tests against the [latest pre-release of Meilisearch](https://github.com/meilisearch/meilisearch/releases). - might eventually contain test failures until the Meilisearch v1.13 is out. ⚠️ This PR should NOT be merged until the next release of Meilisearch (v1.13) is out. _This PR is auto-generated for the [pre-release week](https://github.com/meilisearch/integration-guides/blob/main/resources/pre-release-week.md) purpose._ Co-authored-by: meili-bot <[email protected]> Co-authored-by: Strift <[email protected]> Co-authored-by: meili-bors[bot] <89034592+meili-bors[bot]@users.noreply.github.com>
2 parents dca48cd + 5d47dbf commit 11a76bc

File tree

5 files changed

+63
-60
lines changed

5 files changed

+63
-60
lines changed

.github/workflows/pre-release-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
strategy:
1818
fail-fast: false
1919
matrix:
20-
version: ["3.0.0"]
20+
version: ['latest']
2121
name: integration-tests-against-rc (dart ${{ matrix.version }})
2222
steps:
2323
- name: Checkout

lib/src/results/experimental_features.dart

+2-12
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@ part 'experimental_features.g.dart';
1111
createToJson: false,
1212
)
1313
class ExperimentalFeatures {
14-
@JsonKey(name: 'vectorStore')
15-
final bool vectorStore;
16-
17-
const ExperimentalFeatures({
18-
required this.vectorStore,
19-
});
14+
const ExperimentalFeatures();
2015

2116
factory ExperimentalFeatures.fromJson(Map<String, dynamic> src) {
2217
return _$ExperimentalFeaturesFromJson(src);
@@ -29,12 +24,7 @@ class ExperimentalFeatures {
2924
createFactory: false,
3025
)
3126
class UpdateExperimentalFeatures {
32-
@JsonKey(name: 'vectorStore')
33-
final bool? vectorStore;
34-
35-
const UpdateExperimentalFeatures({
36-
this.vectorStore,
37-
});
27+
const UpdateExperimentalFeatures();
3828

3929
Map<String, dynamic> toJson() => _$UpdateExperimentalFeaturesToJson(this);
4030
}

lib/src/results/experimental_features.g.dart

+3-15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/search_test.dart

+32-27
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:meilisearch/meilisearch.dart';
2-
import 'package:meilisearch/src/results/experimental_features.dart';
32
import 'package:test/test.dart';
43

54
import 'utils/books.dart';
@@ -8,6 +7,8 @@ import 'utils/client.dart';
87
import 'utils/wait_for.dart';
98

109
void main() {
10+
final openAiKeyValue = openAiKey;
11+
1112
group('Search', () {
1213
setUpClient();
1314
late String uid;
@@ -542,55 +543,62 @@ void main() {
542543
});
543544

544545
// Commented because of https://github.com/meilisearch/meilisearch-dart/issues/369
545-
group('Experimental', () {
546+
group('Vector search', () {
546547
setUpClient();
547548
late String uid;
548549
late MeiliSearchIndex index;
549-
late ExperimentalFeatures features;
550-
setUp(() async {
551-
features = await client.http.updateExperimentalFeatures(
552-
UpdateExperimentalFeatures(
553-
vectorStore: true,
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 }}'",
554558
),
555-
);
556-
expect(features.vectorStore, true);
559+
});
560+
});
557561

562+
setUp(() async {
558563
uid = randomUid();
559564
index = await createIndexWithData(uid: uid, data: vectorBooks);
565+
// Configure embedder before running vector search
566+
await index.updateSettings(settings).waitFor(client: client);
560567
});
561568

562569
test('vector search', () async {
563-
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);
564572
final res = await index
565573
.search(
566574
null,
567575
SearchQuery(
568576
vector: vector,
577+
hybrid: HybridSearch(
578+
embedder: 'default',
579+
semanticRatio: 1.0,
580+
),
569581
),
570582
)
571583
.asSearchResult()
572584
.mapToContainer();
573585

574-
expect(res.vector, vector);
575586
expect(
576587
res.hits,
577588
everyElement(
578-
isA<MeiliDocumentContainer<Map<String, dynamic>>>()
579-
.having(
580-
(p0) => p0.vectors,
581-
'vectors',
582-
isNotNull,
583-
)
584-
.having(
585-
(p0) => p0.semanticScore,
586-
'semanticScore',
587-
isNotNull,
588-
),
589+
isA<MeiliDocumentContainer<Map<String, dynamic>>>().having(
590+
(p0) => p0.parsed,
591+
'parsed',
592+
isNotNull,
593+
),
589594
),
590595
);
591596
});
592-
}, skip: "Requires Experimental API");
593-
final openAiKeyValue = openAiKey;
597+
},
598+
skip: openAiKeyValue == null || openAiKeyValue.isEmpty
599+
? "Requires OPEN_AI_API_KEY environment variable"
600+
: null);
601+
594602
group('Embedders', () {
595603
group(
596604
'Unit test',
@@ -665,9 +673,6 @@ void main() {
665673
});
666674

667675
setUp(() async {
668-
final features = await client.http.updateExperimentalFeatures(
669-
UpdateExperimentalFeatures(vectorStore: true));
670-
expect(features.vectorStore, true);
671676
uid = randomUid();
672677
index = await createBooksIndex(uid: uid);
673678
});

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)