| File: Embeddings\GeneratedEmbeddings.cs | Web Access |
| Project: src\src\Libraries\Microsoft.Extensions.AI.Abstractions\Microsoft.Extensions.AI.Abstractions.csproj (Microsoft.Extensions.AI.Abstractions) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; using System.Collections.Generic; using System.Diagnostics; using Microsoft.Shared.Diagnostics; namespace Microsoft.Extensions.AI; /// <summary>Represents the result of an operation to generate embeddings.</summary> /// <typeparam name="TEmbedding">Specifies the type of the generated embeddings.</typeparam> [DebuggerDisplay("Count = {Count}")] public sealed class GeneratedEmbeddings<TEmbedding> : IList<TEmbedding>, IReadOnlyList<TEmbedding> where TEmbedding : Embedding { /// <summary>The underlying list of embeddings.</summary> private List<TEmbedding> _embeddings; /// <summary>Initializes a new instance of the <see cref="GeneratedEmbeddings{TEmbedding}"/> class.</summary> public GeneratedEmbeddings() { _embeddings = []; } /// <summary>Initializes a new instance of the <see cref="GeneratedEmbeddings{TEmbedding}"/> class with the specified capacity.</summary> /// <param name="capacity">The number of embeddings that the new list can initially store.</param> public GeneratedEmbeddings(int capacity) { _embeddings = new List<TEmbedding>(Throw.IfLessThan(capacity, 0)); } /// <summary> /// Initializes a new instance of the <see cref="GeneratedEmbeddings{TEmbedding}"/> class that contains all of the embeddings from the specified collection. /// </summary> /// <param name="embeddings">The collection whose embeddings are copied to the new list.</param> public GeneratedEmbeddings(IEnumerable<TEmbedding> embeddings) { _embeddings = new List<TEmbedding>(Throw.IfNull(embeddings)); } /// <summary>Gets or sets usage details for the embeddings' generation.</summary> public UsageDetails? Usage { get; set; } /// <summary>Gets or sets any additional properties associated with the embeddings.</summary> public AdditionalPropertiesDictionary? AdditionalProperties { get; set; } /// <inheritdoc /> public TEmbedding this[int index] { get => _embeddings[index]; set => _embeddings[index] = value; } /// <inheritdoc /> public int Count => _embeddings.Count; /// <inheritdoc /> bool ICollection<TEmbedding>.IsReadOnly => false; /// <inheritdoc /> public void Add(TEmbedding item) => _embeddings.Add(item); /// <summary>Adds the embeddings from the specified collection to the end of this list.</summary> /// <param name="items">The collection whose elements should be added to this list.</param> public void AddRange(IEnumerable<TEmbedding> items) => _embeddings.AddRange(items); /// <inheritdoc /> public void Clear() => _embeddings.Clear(); /// <inheritdoc /> public bool Contains(TEmbedding item) => _embeddings.Contains(item); /// <inheritdoc /> public void CopyTo(TEmbedding[] array, int arrayIndex) => _embeddings.CopyTo(array, arrayIndex); /// <inheritdoc /> public IEnumerator<TEmbedding> GetEnumerator() => _embeddings.GetEnumerator(); /// <inheritdoc /> IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); /// <inheritdoc /> public int IndexOf(TEmbedding item) => _embeddings.IndexOf(item); /// <inheritdoc /> public void Insert(int index, TEmbedding item) => _embeddings.Insert(index, item); /// <inheritdoc /> public bool Remove(TEmbedding item) => _embeddings.Remove(item); /// <inheritdoc /> public void RemoveAt(int index) => _embeddings.RemoveAt(index); }