Skip to content

Commit 2a1fc10

Browse files
committed
fix broken tests
1 parent c50bf27 commit 2a1fc10

File tree

3 files changed

+26
-29
lines changed

3 files changed

+26
-29
lines changed

src/Build5Nines.SharpVector/MemoryVectorDatabaseBase.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Runtime.CompilerServices;
1010
using System.Text.Json;
1111
using Build5Nines.SharpVector.Embeddings;
12+
using System.Runtime.ExceptionServices;
1213

1314
namespace Build5Nines.SharpVector;
1415

@@ -143,8 +144,9 @@ public void UpdateText(TId id, TVocabularyKey text)
143144
public void UpdateTextMetadata(TId id, TMetadata metadata) {
144145
if (VectorStore.ContainsKey(id))
145146
{
146-
var text = GetText(id);
147-
text.Metadata = metadata;
147+
var existing = VectorStore.Get(id);
148+
existing.Metadata = metadata;
149+
VectorStore.Set(id, existing);
148150
}
149151
else
150152
{
@@ -226,7 +228,7 @@ private async Task<IEnumerable<IVectorTextResultItem<TId, TVocabularyKey, TMetad
226228
}
227229

228230
var results = new ConcurrentBag<VectorTextResultItem<TId, TVocabularyKey, TMetadata>>();
229-
await foreach (var kvp in VectorStore)
231+
await foreach (KeyValuePair<TId, VectorTextItem<TVocabularyKey, TMetadata>> kvp in VectorStore)
230232
{
231233
var item = kvp.Value;
232234
float vectorComparisonValue = await _vectorComparer.CalculateAsync(_vectorizer.NormalizeVector(queryVector, desiredLength), _vectorizer.NormalizeVector(item.Vector, desiredLength));
@@ -438,9 +440,10 @@ public async Task UpdateTextAsync(TId id, string text)
438440
{
439441
if (VectorStore.ContainsKey(id))
440442
{
443+
var existing = VectorStore.Get(id);
441444
var vector = await EmbeddingsGenerator.GenerateEmbeddingsAsync(text);
442-
var metadata = VectorStore.Get(id).Metadata;
443-
VectorStore.Set(id, new VectorTextItem<TMetadata>(text, metadata, vector));
445+
var metadata = existing.Metadata;
446+
VectorStore.Set(id, new VectorTextItem<TMetadata>(text, existing.Metadata, vector));
444447
}
445448
else
446449
{
@@ -468,8 +471,9 @@ public void UpdateText(TId id, string text)
468471
public void UpdateTextMetadata(TId id, TMetadata metadata) {
469472
if (VectorStore.ContainsKey(id))
470473
{
471-
var text = GetText(id);
472-
text.Metadata = metadata;
474+
var existing = VectorStore.Get(id);
475+
existing.Metadata = metadata;
476+
VectorStore.Set(id, existing);
473477
}
474478
else
475479
{

src/Build5Nines.SharpVector/VectorTextResultItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class VectorTextResultItem<TId, TDocument, TMetadata>
2929

3030
public VectorTextResultItem(TId id, IVectorTextItem<TDocument, TMetadata> item, float vectorComparison)
3131
{
32-
_id = Id;
32+
_id = id;
3333
_item = item;
3434
VectorComparison = vectorComparison;
3535
}

src/SharpVectorTest/VectorDatabaseTests.cs

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void BasicMemoryVectorDatabase_01()
2626

2727
Assert.AreEqual(1, results.Texts.Count());
2828
Assert.IsTrue(results.Texts.First().Text.Contains("Lion King"));
29-
Assert.AreEqual(0, results.Texts.First().Id);
29+
Assert.AreEqual(1, results.Texts.First().Id);
3030
Assert.AreEqual("[some metadata here]", results.Texts.First().Metadata);
3131
Assert.AreEqual(0.3396831452846527, results.Texts.First().VectorComparison);
3232
}
@@ -506,18 +506,19 @@ public async Task SimpleTest_BasicMemoryVectorDatabase_UpdateMetadata_01()
506506
var item = results.Texts.First();
507507

508508
Assert.AreEqual(2, id);
509+
Assert.AreEqual(id, item.Id, "ID should match the one returned by AddText.");
509510

510511
vdb.UpdateTextMetadata(item.Id, "222");
511512

512513
results = await vdb.SearchAsync("Two");
513514

514-
Assert.AreEqual(1, results.Texts.Count());
515+
Assert.AreEqual(3, results.Texts.Count());
515516
Assert.AreEqual("Two", results.Texts.First().Text);
516517
Assert.AreEqual("222", results.Texts.First().Metadata);
517518

518519
results = await vdb.SearchAsync("One");
519520

520-
Assert.AreEqual(1, results.Texts.Count());
521+
Assert.AreEqual(3, results.Texts.Count());
521522
Assert.AreEqual("One", results.Texts.First().Text);
522523
Assert.AreEqual("1", results.Texts.First().Metadata);
523524
}
@@ -540,13 +541,13 @@ public async Task SimpleTest_MemoryVectorDatabase_UpdateMetadata_01()
540541

541542
vdb.UpdateTextMetadata(item.Id, "222");
542543

543-
results = await vdb.SearchAsync("Two");
544+
results = await vdb.SearchAsync("Two", pageCount: 1);
544545

545546
Assert.AreEqual(1, results.Texts.Count());
546547
Assert.AreEqual("Two", results.Texts.First().Text);
547548
Assert.AreEqual("222", results.Texts.First().Metadata);
548549

549-
results = await vdb.SearchAsync("One");
550+
results = await vdb.SearchAsync("One", pageCount: 1);
550551

551552
Assert.AreEqual(1, results.Texts.Count());
552553
Assert.AreEqual("One", results.Texts.First().Text);
@@ -567,24 +568,23 @@ public async Task SimpleTest_MemoryVectorDatabase_UpdateMetadata_02()
567568

568569
var results = await vdb.SearchAsync("Two");
569570

571+
foreach(var i in results.Texts)
572+
{
573+
Assert.AreNotEqual("00000000-0000-0000-0000-000000000000", i.Id.ToString(), $"Search ID ({i.Text}) should not be empty.");
574+
}
575+
570576
var item = results.Texts.First();
571577

572-
Assert.AreNotEqual("00000000-0000-0000-0000-000000000000", item.Id.ToString(), "Search ID should not be empty.");
578+
Assert.AreEqual(id, item.Id, "ID should match the one returned by AddText.");
573579

574580
vdb.UpdateText(item.Id, "TwoTwo");
575581
vdb.UpdateTextMetadata(item.Id, "222");
576582

577583
results = await vdb.SearchAsync("Two");
578584

579-
Assert.AreEqual(1, results.Texts.Count());
580-
Assert.AreEqual("Two", results.Texts.First().Text);
585+
Assert.AreEqual(3, results.Texts.Count());
586+
Assert.AreEqual("TwoTwo", results.Texts.First().Text);
581587
Assert.AreEqual("222", results.Texts.First().Metadata);
582-
583-
results = await vdb.SearchAsync("One");
584-
585-
Assert.AreEqual(1, results.Texts.Count());
586-
Assert.AreEqual("One", results.Texts.First().Text);
587-
Assert.AreEqual("1", results.Texts.First().Metadata);
588588
}
589589

590590
[TestMethod]
@@ -611,13 +611,6 @@ public void SimpleTest_MemoryVectorDatabase_UpdateMetadata_03()
611611
Assert.AreEqual("{ value: \"元数据初始值\" }", results.Texts.First().Metadata);
612612
}
613613

614-
615-
616-
617-
618-
619-
620-
621614
[TestMethod]
622615
public void EuclideanDistanceVectorComparerAsyncMemoryVectorDatabase_1()
623616
{

0 commit comments

Comments
 (0)