Skip to content

Commit e41c054

Browse files
authored
Merge pull request #1131 from iceljc/features/add-agent-function-visibility
add vector payload value operator
2 parents 34f04e7 + 58eb254 commit e41c054

File tree

3 files changed

+41
-35
lines changed

3 files changed

+41
-35
lines changed

src/Infrastructure/BotSharp.Abstraction/VectorStorage/Models/VectorFilterGroup.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace BotSharp.Abstraction.VectorStorage.Models;
55
public class VectorFilterGroup
66
{
77
[JsonPropertyName("filters")]
8-
public List<VectorFilterSubGroup>? Filters { get; set; }
8+
public IEnumerable<VectorFilterSubGroup>? Filters { get; set; }
99

1010
[JsonPropertyName("logical_operator")]
1111
public string LogicalOperator { get; set; } = "or";
@@ -14,7 +14,7 @@ public class VectorFilterGroup
1414
public class VectorFilterSubGroup
1515
{
1616
[JsonPropertyName("operands")]
17-
public List<VectorFilterOperand> Operands { get; set; } = [];
17+
public IEnumerable<VectorFilterOperand> Operands { get; set; } = [];
1818

1919
[JsonPropertyName("logical_operator")]
2020
public string LogicalOperator { get; set; } = "or";
@@ -52,18 +52,19 @@ public class VectorFilterRange
5252
public string Key { get; set; } = null!;
5353

5454
[JsonPropertyName("conditions")]
55-
public List<VectorFilterRangeCondition> Conditions { get; set; } = [];
55+
public IEnumerable<VectorFilterRangeCondition> Conditions { get; set; } = [];
5656

5757
[JsonPropertyName("data_type")]
5858
public VectorPayloadDataType DataType { get; set; } = VectorPayloadDataType.String;
5959

6060
public override string ToString()
6161
{
6262
var str = $"Data type: {DataType};";
63-
Conditions?.ForEach(x =>
63+
64+
foreach (var condition in Conditions)
6465
{
65-
str += $"{Key} {x.Operator} {x.Value};";
66-
});
66+
str += $"{Key} {condition.Operator} {condition.Value};";
67+
}
6768
return str;
6869
}
6970
}
Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using BotSharp.Abstraction.VectorStorage.Enums;
2+
using Newtonsoft.Json.Linq;
23

34
namespace BotSharp.Abstraction.VectorStorage.Models;
45

@@ -26,33 +27,35 @@ public override string ToString()
2627
return $"{DataValue} ({DataType})";
2728
}
2829

29-
public static VectorPayloadValue BuildStringValue(string data)
30-
{
31-
return new(data, VectorPayloadDataType.String);
32-
}
33-
34-
public static VectorPayloadValue BuildIntegerValue(long data)
35-
{
36-
return new(data, VectorPayloadDataType.Integer);
37-
}
38-
39-
public static VectorPayloadValue BuildDoubleValue(double data)
40-
{
41-
return new(data, VectorPayloadDataType.Double);
42-
}
43-
44-
public static VectorPayloadValue BuildBooleanValue(bool data)
45-
{
46-
return new(data, VectorPayloadDataType.Boolean);
47-
}
48-
49-
public static VectorPayloadValue BuildDatetimeValue(DateTime data)
50-
{
51-
return new(data, VectorPayloadDataType.Datetime);
52-
}
53-
54-
public static VectorPayloadValue BuildUnkownValue(object data)
55-
{
56-
return new(data, VectorPayloadDataType.Unknown);
57-
}
30+
public static VectorPayloadValue BuildStringValue(string data) => new(data, VectorPayloadDataType.String);
31+
public static VectorPayloadValue BuildIntegerValue(long data) => new(data, VectorPayloadDataType.Integer);
32+
public static VectorPayloadValue BuildIntegerValue(int data) => new(data, VectorPayloadDataType.Integer);
33+
public static VectorPayloadValue BuildIntegerValue(short data) => new(data, VectorPayloadDataType.Integer);
34+
public static VectorPayloadValue BuildIntegerValue(byte data) => new(data, VectorPayloadDataType.Integer);
35+
public static VectorPayloadValue BuildDoubleValue(double data) => new(data, VectorPayloadDataType.Double);
36+
public static VectorPayloadValue BuildDoubleValue(float data) => new(data, VectorPayloadDataType.Double);
37+
public static VectorPayloadValue BuildBooleanValue(bool data) => new(data, VectorPayloadDataType.Boolean);
38+
public static VectorPayloadValue BuildDatetimeValue(DateTime data) => new(data, VectorPayloadDataType.Datetime);
39+
public static VectorPayloadValue BuildUnkownValue(object data) => new(data, VectorPayloadDataType.Unknown);
40+
41+
42+
public static explicit operator VectorPayloadValue(string data) => VectorPayloadValue.BuildStringValue(data);
43+
public static explicit operator VectorPayloadValue(long data) => VectorPayloadValue.BuildIntegerValue(data);
44+
public static explicit operator VectorPayloadValue(int data) => VectorPayloadValue.BuildIntegerValue(data);
45+
public static explicit operator VectorPayloadValue(short data) => VectorPayloadValue.BuildIntegerValue(data);
46+
public static explicit operator VectorPayloadValue(byte data) => VectorPayloadValue.BuildIntegerValue(data);
47+
public static explicit operator VectorPayloadValue(double data) => VectorPayloadValue.BuildDoubleValue(data);
48+
public static explicit operator VectorPayloadValue(float data) => VectorPayloadValue.BuildDoubleValue(data);
49+
public static explicit operator VectorPayloadValue(bool data) => VectorPayloadValue.BuildBooleanValue(data);
50+
public static explicit operator VectorPayloadValue(DateTime data) => VectorPayloadValue.BuildDatetimeValue(data);
51+
52+
public static implicit operator string(VectorPayloadValue value) => value.DataValue?.ToString() ?? string.Empty;
53+
public static implicit operator long(VectorPayloadValue value) => long.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
54+
public static implicit operator int(VectorPayloadValue value) => int.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
55+
public static implicit operator short(VectorPayloadValue value) => short.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
56+
public static implicit operator byte(VectorPayloadValue value) => byte.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
57+
public static implicit operator double(VectorPayloadValue value) => double.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
58+
public static implicit operator float(VectorPayloadValue value) => float.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
59+
public static implicit operator bool(VectorPayloadValue value) => bool.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
60+
public static implicit operator DateTime(VectorPayloadValue value) => DateTime.TryParse(value.DataValue?.ToString(), out var res) ? res : default;
5861
}

src/Plugins/BotSharp.Plugin.Qdrant/QdrantDb.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,7 @@ public async Task<bool> DeleteCollectionShapshot(string collectionName, string s
507507

508508

509509
#region Private methods
510+
#region Query filter
510511
private Filter? BuildQueryFilter(IEnumerable<VectorFilterGroup>? filterGroups)
511512
{
512513
if (filterGroups.IsNullOrEmpty())
@@ -783,6 +784,7 @@ public async Task<bool> DeleteCollectionShapshot(string collectionName, string s
783784

784785
return fieldCondition;
785786
}
787+
#endregion
786788

787789
private WithPayloadSelector? BuildPayloadSelector(IEnumerable<string>? payloads)
788790
{

0 commit comments

Comments
 (0)