in Elastic.SemanticKernel.Connectors.Elasticsearch/Internal/Helpers/VectorStoreRecordPropertyReader.cs [374:406]
private static (List<VectorStoreRecordKeyProperty> KeyProperties, List<VectorStoreRecordDataProperty> DataProperties, List<VectorStoreRecordVectorProperty> VectorProperties) SplitDefinitionAndVerify(
string typeName,
VectorStoreRecordDefinition definition,
bool supportsMultipleKeys,
bool supportsMultipleVectors,
bool requiresAtLeastOneVector)
{
var keyProperties = definition.Properties.OfType<VectorStoreRecordKeyProperty>().ToList();
var dataProperties = definition.Properties.OfType<VectorStoreRecordDataProperty>().ToList();
var vectorProperties = definition.Properties.OfType<VectorStoreRecordVectorProperty>().ToList();
if (keyProperties.Count > 1 && !supportsMultipleKeys)
{
throw new ArgumentException($"Multiple key properties found on type {typeName} or the provided {nameof(VectorStoreRecordDefinition)}.");
}
if (keyProperties.Count == 0)
{
throw new ArgumentException($"No key property found on type {typeName} or the provided {nameof(VectorStoreRecordDefinition)}.");
}
if (requiresAtLeastOneVector && vectorProperties.Count == 0)
{
throw new ArgumentException($"No vector property found on type {typeName} or the provided {nameof(VectorStoreRecordDefinition)} while at least one is required.");
}
if (!supportsMultipleVectors && vectorProperties.Count > 1)
{
throw new ArgumentException($"Multiple vector properties found on type {typeName} or the provided {nameof(VectorStoreRecordDefinition)} while only one is supported.");
}
return (keyProperties, dataProperties, vectorProperties);
}