From 5541455f39492bd95a5a96a27ea50db880084fcd Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Mon, 28 Aug 2023 11:55:55 -0700 Subject: [PATCH] Add deletions + Fix image OCR * add new memory API to delete documents, supporting retry and long running operation, + examples * add Azure Form Recognizer interactive setup * add image OCR examples * allow to request max results to vector DBs * move default handlers registration code to memory client builder, with full support for DI. This will allow cleaning up/reducing the orchestrators interface and reduce coupling/complexity. * fix Azure Form Recognizer, crashing both service and serverless memory and other issues * fix potential overflow in Azure Search and handle correctly max results * fix tags filtering in SimpleVectorDb --- SemanticMemory.sln.DotSettings | 2 + dotnet/ClientLib/Constants.cs | 7 +- dotnet/ClientLib/ISemanticMemoryClient.cs | 11 + dotnet/ClientLib/MemoryWebClient.cs | 30 ++ .../AppBuilders/MemoryClientBuilder.cs | 74 +++- .../AzureBlobs/AzureBlobsStorage.cs | 92 ++++- .../DevTools/SimpleFileStorage.cs | 71 +++- .../CoreLib/ContentStorage/IContentStorage.cs | 62 +++- .../AzureFormRecognizerEngine.cs | 17 +- .../DependencyInjection.cs | 13 +- .../CoreLib/Handlers/DeleteDocumentHandler.cs | 65 ++++ dotnet/CoreLib/Memory.cs | 18 +- dotnet/CoreLib/MemoryService.cs | 6 + .../AzureCognitiveSearchMemory.cs | 21 +- .../AzureCognitiveSearchMemoryRecord.cs | 2 +- .../MemoryStorage/DevTools/SimpleVectorDb.cs | 14 +- .../MemoryStorage/Qdrant/QdrantMemory.cs | 2 + dotnet/CoreLib/Pipeline/BaseOrchestrator.cs | 68 ++-- dotnet/CoreLib/Pipeline/DataPipeline.cs | 2 + .../CoreLib/Pipeline/IPipelineOrchestrator.cs | 17 +- dotnet/InteractiveSetup/Main.cs | 52 +++ dotnet/Service/Program.cs | 34 +- .../001-dotnet-Serverless.csproj | 4 + examples/001-dotnet-Serverless/Program.cs | 328 ++++++++++------- .../file6-ANWC-image.jpg | Bin 0 -> 146980 bytes .../002-dotnet-WebClient.csproj | 4 + examples/002-dotnet-WebClient/Program.cs | 346 +++++++++++------- .../002-dotnet-WebClient/file6-ANWC-image.jpg | Bin 0 -> 146980 bytes tests/FunctionalTests/.gitignore | 1 + 29 files changed, 977 insertions(+), 386 deletions(-) create mode 100644 dotnet/CoreLib/Handlers/DeleteDocumentHandler.cs create mode 100644 examples/001-dotnet-Serverless/file6-ANWC-image.jpg create mode 100644 examples/002-dotnet-WebClient/file6-ANWC-image.jpg create mode 100644 tests/FunctionalTests/.gitignore diff --git a/SemanticMemory.sln.DotSettings b/SemanticMemory.sln.DotSettings index ce61152f8..27d2cba1d 100644 --- a/SemanticMemory.sln.DotSettings +++ b/SemanticMemory.sln.DotSettings @@ -108,6 +108,7 @@ MQTT MS MSAL + OCR OID OK OS @@ -254,6 +255,7 @@ public void It$SOMENAME$() True DO_NOT_SHOW True + True True True True diff --git a/dotnet/ClientLib/Constants.cs b/dotnet/ClientLib/Constants.cs index 7ed1f8a24..223eb2b8b 100644 --- a/dotnet/ClientLib/Constants.cs +++ b/dotnet/ClientLib/Constants.cs @@ -43,7 +43,12 @@ public static class Constants public const string HttpSearchEndpoint = "/search"; public const string HttpUploadEndpoint = "/upload"; public const string HttpUploadStatusEndpoint = "/upload-status"; - public const string HttpUploadStatusEndpointWithParams = $"/upload-status?{WebServiceIndexField}={HttpIndexPlaceholder}&{WebServiceDocumentIdField}={HttpDocumentIdPlaceholder}"; + public const string HttpDocumentsEndpoint = "/documents"; + public const string HttpDeleteEndpointWithParams = $"{HttpDocumentsEndpoint}?{WebServiceIndexField}={HttpIndexPlaceholder}&{WebServiceDocumentIdField}={HttpDocumentIdPlaceholder}"; + public const string HttpUploadStatusEndpointWithParams = $"{HttpUploadStatusEndpoint}?{WebServiceIndexField}={HttpIndexPlaceholder}&{WebServiceDocumentIdField}={HttpDocumentIdPlaceholder}"; public const string HttpIndexPlaceholder = "{index}"; public const string HttpDocumentIdPlaceholder = "{documentId}"; + + // Handlers + public const string DeleteDocumentPipelineStepName = "private_delete_document"; } diff --git a/dotnet/ClientLib/ISemanticMemoryClient.cs b/dotnet/ClientLib/ISemanticMemoryClient.cs index b67a5980a..4581a2c2c 100644 --- a/dotnet/ClientLib/ISemanticMemoryClient.cs +++ b/dotnet/ClientLib/ISemanticMemoryClient.cs @@ -108,6 +108,17 @@ public Task ImportWebPageAsync( IEnumerable? steps = null, CancellationToken cancellationToken = default); + /// + /// Delete a specified document from memory, and update all derived memories. + /// + /// Document ID + /// Optional index name + /// Async task cancellation token + public Task DeleteDocumentAsync( + string documentId, + string? index = null, + CancellationToken cancellationToken = default); + /// /// Check if a document ID exists in the given index and is ready for usage. /// The logic checks if the uploaded document has been fully processed. diff --git a/dotnet/ClientLib/MemoryWebClient.cs b/dotnet/ClientLib/MemoryWebClient.cs index 213ca1097..b892d3029 100644 --- a/dotnet/ClientLib/MemoryWebClient.cs +++ b/dotnet/ClientLib/MemoryWebClient.cs @@ -108,6 +108,36 @@ public async Task ImportWebPageAsync( .ConfigureAwait(false); } + /// + public async Task DeleteDocumentAsync(string documentId, string? index = null, CancellationToken cancellationToken = default) + { + if (string.IsNullOrWhiteSpace(documentId)) + { + throw new SemanticMemoryException("The document ID is empty"); + } + + index = IndexExtensions.CleanName(index); + var url = Constants.HttpDeleteEndpointWithParams + .Replace(Constants.HttpIndexPlaceholder, index) + .Replace(Constants.HttpDocumentIdPlaceholder, documentId); + HttpResponseMessage? response = await this._client.DeleteAsync(url, cancellationToken).ConfigureAwait(false); + + // No error if the document doesn't exist + if (response.StatusCode == HttpStatusCode.NotFound) + { + return; + } + + try + { + response.EnsureSuccessStatusCode(); + } + catch (Exception e) + { + throw new SemanticMemoryException($"Delete failed, status code: {response.StatusCode}", e); + } + } + /// public async Task IsDocumentReadyAsync( string documentId, diff --git a/dotnet/CoreLib/AppBuilders/MemoryClientBuilder.cs b/dotnet/CoreLib/AppBuilders/MemoryClientBuilder.cs index 0190e8896..0af4b0b87 100644 --- a/dotnet/CoreLib/AppBuilders/MemoryClientBuilder.cs +++ b/dotnet/CoreLib/AppBuilders/MemoryClientBuilder.cs @@ -15,6 +15,7 @@ using Microsoft.SemanticMemory.ContentStorage.DevTools; using Microsoft.SemanticMemory.DataFormats.Image; using Microsoft.SemanticMemory.DataFormats.Image.AzureFormRecognizer; +using Microsoft.SemanticMemory.Handlers; using Microsoft.SemanticMemory.MemoryStorage; using Microsoft.SemanticMemory.MemoryStorage.DevTools; using Microsoft.SemanticMemory.MemoryStorage.Qdrant; @@ -33,6 +34,7 @@ public class MemoryClientBuilder { private readonly IServiceCollection? _sharedServiceCollection; private const string ConfigRoot = "SemanticMemory"; + private bool _useDefaultHandlers = true; private enum ClientTypes { @@ -83,6 +85,12 @@ public MemoryClientBuilder(WebApplicationBuilder appBuilder) this.WithSimpleFileStorage(new SimpleFileStorageConfig { Directory = Path.Join(Path.GetTempPath(), "content") }); } + public MemoryClientBuilder WithoutDefaultHandlers() + { + this._useDefaultHandlers = false; + return this; + } + public MemoryClientBuilder WithCustomIngestionQueueClientFactory(QueueClientFactory service) { service = service ?? throw new ConfigurationException("The ingestion queue client factory instance is NULL"); @@ -419,6 +427,28 @@ public Memory BuildServerlessClient() try { this.CompleteServerlessClient(); + + if (this._useDefaultHandlers) + { + this._appBuilder.Services.AddTransient(serviceProvider + => ActivatorUtilities.CreateInstance(serviceProvider, "extract")); + + this._appBuilder.Services.AddTransient(serviceProvider + => ActivatorUtilities.CreateInstance(serviceProvider, "partition")); + + this._appBuilder.Services.AddTransient(serviceProvider + => ActivatorUtilities.CreateInstance(serviceProvider, "summarize")); + + this._appBuilder.Services.AddTransient(serviceProvider + => ActivatorUtilities.CreateInstance(serviceProvider, "gen_embeddings")); + + this._appBuilder.Services.AddTransient(serviceProvider + => ActivatorUtilities.CreateInstance(serviceProvider, "save_embeddings")); + + this._appBuilder.Services.AddTransient(serviceProvider + => ActivatorUtilities.CreateInstance(serviceProvider, Constants.DeleteDocumentPipelineStepName)); + } + this._app = this._appBuilder.Build(); // In case the user didn't set the embedding generator and vector DB to use for ingestion, use the values set for retrieval @@ -427,9 +457,20 @@ public Memory BuildServerlessClient() var orchestrator = this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build orchestrator"); var searchClient = this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build search client"); - var ocrEngine = this._app.Services.GetService(); - return new Memory(orchestrator, searchClient, ocrEngine); + var instance = new Memory(orchestrator, searchClient); + + if (this._useDefaultHandlers) + { + instance.AddHandler(this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build " + nameof(TextExtractionHandler))); + instance.AddHandler(this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build " + nameof(TextPartitioningHandler))); + instance.AddHandler(this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build " + nameof(SummarizationHandler))); + instance.AddHandler(this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build " + nameof(GenerateEmbeddingsHandler))); + instance.AddHandler(this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build " + nameof(SaveEmbeddingsHandler))); + instance.AddHandler(this._app.Services.GetService() ?? throw new ConfigurationException("Unable to build " + nameof(DeleteDocumentHandler))); + } + + return instance; } catch (Exception e) { @@ -450,6 +491,27 @@ public MemoryService BuildAsyncClient() var orchestrator = app.Services.GetService() ?? throw new ConfigurationException("Unable to build orchestrator"); var searchClient = app.Services.GetService() ?? throw new ConfigurationException("Unable to build search client"); + if (this._useDefaultHandlers) + { + if (this._sharedServiceCollection == null) + { + const string ClassName = nameof(MemoryClientBuilder); + const string MethodName = nameof(this.WithoutDefaultHandlers); + throw new ConfigurationException("Service collection not available, unable to register default handlers. " + + $"If you'd like using the default handlers use `new {ClassName}()`, " + + $"otherwise use `{ClassName}(...).{MethodName}()` to manage the list of handlers manually."); + } + + // Handlers - Register these handlers to run as hosted services in the caller app. + // At start each hosted handler calls IPipelineOrchestrator.AddHandlerAsync() to register in the orchestrator. + this._sharedServiceCollection.AddHandlerAsHostedService("extract"); + this._sharedServiceCollection.AddHandlerAsHostedService("summarize"); + this._sharedServiceCollection.AddHandlerAsHostedService("partition"); + this._sharedServiceCollection.AddHandlerAsHostedService("gen_embeddings"); + this._sharedServiceCollection.AddHandlerAsHostedService("save_embeddings"); + this._sharedServiceCollection.AddHandlerAsHostedService(Constants.DeleteDocumentPipelineStepName); + } + return new MemoryService(orchestrator, searchClient); } @@ -473,14 +535,6 @@ private MemoryClientBuilder CompleteAsyncClient() return this; } - private MemoryClientBuilder AddSingleton(Func serviceFactory) - where TService : class - { - this._appBuilder.Services.AddSingleton(serviceFactory); - this._sharedServiceCollection?.AddSingleton(serviceFactory); - return this; - } - private MemoryClientBuilder AddSingleton(TService implementationInstance) where TService : class { diff --git a/dotnet/CoreLib/ContentStorage/AzureBlobs/AzureBlobsStorage.cs b/dotnet/CoreLib/ContentStorage/AzureBlobs/AzureBlobsStorage.cs index 9907f4f5e..8c936d3eb 100644 --- a/dotnet/CoreLib/ContentStorage/AzureBlobs/AzureBlobsStorage.cs +++ b/dotnet/CoreLib/ContentStorage/AzureBlobs/AzureBlobsStorage.cs @@ -103,13 +103,24 @@ public AzureBlobsStorage( } /// - public string JoinPaths(string path1, string path2) + public async Task CreateIndexDirectoryAsync( + string index, + CancellationToken cancellationToken = default) { - return $"{path1}/{path2}"; + this._log.LogTrace("Creating container '{0}' ...", this._containerName); + + await this._containerClient + .CreateIfNotExistsAsync(PublicAccessType.None, cancellationToken: cancellationToken) + .ConfigureAwait(false); + + this._log.LogTrace("Container '{0}' ready", this._containerName); } /// - public async Task CreateDirectoryAsync(string directoryName, CancellationToken cancellationToken = default) + public async Task CreateDocumentDirectoryAsync( + string index, + string documentId, + CancellationToken cancellationToken = default) { this._log.LogTrace("Creating container '{0}' ...", this._containerName); @@ -121,20 +132,38 @@ await this._containerClient } /// - public Task WriteTextFileAsync(string directoryName, string fileName, string fileContent, CancellationToken cancellationToken = default) + public Task WriteTextFileAsync( + string index, + string documentId, + string fileName, + string fileContent, + CancellationToken cancellationToken = default) { + var directoryName = JoinPaths(index, documentId); return this.InternalWriteAsync(directoryName, fileName, fileContent, cancellationToken); } /// - public Task WriteStreamAsync(string directoryName, string fileName, Stream contentStream, CancellationToken cancellationToken = default) + public Task WriteStreamAsync( + string index, + string documentId, + string fileName, + Stream contentStream, + CancellationToken cancellationToken = default) { + var directoryName = JoinPaths(index, documentId); return this.InternalWriteAsync(directoryName, fileName, contentStream, cancellationToken); } /// - public async Task ReadFileAsync(string directoryName, string fileName, bool errIfNotFound = true, CancellationToken cancellationToken = default) + public async Task ReadFileAsync( + string index, + string documentId, + string fileName, + bool errIfNotFound = true, + CancellationToken cancellationToken = default) { + var directoryName = JoinPaths(index, documentId); var blobName = $"{directoryName}/{fileName}"; BlobClient blobClient = this.GetBlobClient(blobName); @@ -158,6 +187,57 @@ public async Task ReadFileAsync(string directoryName, string fileNam } } + /// + public async Task DeleteDocumentDirectoryAsync(string index, string documentId, CancellationToken cancellationToken = default) + { + var directoryName = JoinPaths(index, documentId); + if (string.IsNullOrWhiteSpace(index) || string.IsNullOrWhiteSpace(documentId) || string.IsNullOrWhiteSpace(directoryName)) + { + throw new ContentStorageException("The blob prefix is empty, stopping the process to prevent data loss"); + } + + this._log.LogInformation("Deleting blobs at {0}", directoryName); + + AsyncPageable? blobList = this._containerClient.GetBlobsAsync(prefix: directoryName, cancellationToken: cancellationToken); + await foreach (Page page in blobList.AsPages().WithCancellation(cancellationToken)) + { + foreach (BlobItem blob in page.Values) + { + // Skip root and empty names + if (string.IsNullOrWhiteSpace(blob.Name) || blob.Name == directoryName) { continue; } + + // Remove the prefix, skip root and empty names + var fileName = blob.Name.Trim('/').Substring(directoryName.Trim('/').Length).Trim('/'); + if (string.IsNullOrWhiteSpace(fileName)) { continue; } + + // Don't delete the pipeline status file + if (fileName == Constants.PipelineStatusFilename) { continue; } + + this._log.LogInformation("Deleting blob {0}", blob.Name); + Response? response = await this.GetBlobClient(blob.Name).DeleteAsync(cancellationToken: cancellationToken).ConfigureAwait(false); + if (response.Status < 300) + { + this._log.LogDebug("Delete response: {0}", response.Status); + } + else + { + this._log.LogWarning("Unexpected delete response: {0}", response.Status); + } + } + } + } + + /// + /// Join index name and document ID, using the platform specific logic, to calculate the directory name + /// + /// Index name, left side of the path + /// Document ID, right side of the path (appended to index) + /// Index name concatenated with Document Id into a single path + private static string JoinPaths(string index, string documentId) + { + return $"{index}/{documentId}"; + } + private async Task InternalWriteAsync(string directoryName, string fileName, object content, CancellationToken cancellationToken) { var blobName = $"{directoryName}/{fileName}"; diff --git a/dotnet/CoreLib/ContentStorage/DevTools/SimpleFileStorage.cs b/dotnet/CoreLib/ContentStorage/DevTools/SimpleFileStorage.cs index 67ff32551..b6c9a8f35 100644 --- a/dotnet/CoreLib/ContentStorage/DevTools/SimpleFileStorage.cs +++ b/dotnet/CoreLib/ContentStorage/DevTools/SimpleFileStorage.cs @@ -25,39 +25,46 @@ public SimpleFileStorage(SimpleFileStorageConfig config, ILogger - public string JoinPaths(string path1, string path2) + public Task CreateIndexDirectoryAsync(string index, CancellationToken cancellationToken = default) { - return Path.Join(path1, path2); + this.CreateDirectory(Path.Join(this._directory, index)); + return Task.CompletedTask; } /// - public Task CreateDirectoryAsync(string directoryName, CancellationToken cancellationToken = default) + public async Task CreateDocumentDirectoryAsync( + string index, + string documentId, + CancellationToken cancellationToken = default) { - var path = Path.Join(this._directory, directoryName); - - if (!Directory.Exists(path)) - { - this._log.LogDebug("Creating directory {0}", path); - Directory.CreateDirectory(path); - } - - return Task.CompletedTask; + await this.CreateIndexDirectoryAsync(index, cancellationToken).ConfigureAwait(false); + this.CreateDirectory(Path.Join(this._directory, index, documentId)); } /// - public async Task WriteTextFileAsync(string directoryName, string fileName, string fileContent, CancellationToken cancellationToken = default) + public async Task WriteTextFileAsync( + string index, + string documentId, + string fileName, + string fileContent, + CancellationToken cancellationToken = default) { - await this.CreateDirectoryAsync(directoryName, cancellationToken).ConfigureAwait(false); - var path = Path.Join(this._directory, directoryName, fileName); + await this.CreateDocumentDirectoryAsync(index, documentId, cancellationToken).ConfigureAwait(false); + var path = Path.Join(this._directory, index, documentId, fileName); this._log.LogDebug("Writing file {0}", path); await File.WriteAllTextAsync(path, fileContent, cancellationToken).ConfigureAwait(false); } /// - public async Task WriteStreamAsync(string directoryName, string fileName, Stream contentStream, CancellationToken cancellationToken = default) + public async Task WriteStreamAsync( + string index, + string documentId, + string fileName, + Stream contentStream, + CancellationToken cancellationToken = default) { - await this.CreateDirectoryAsync(directoryName, cancellationToken).ConfigureAwait(false); - var path = Path.Join(this._directory, directoryName, fileName); + await this.CreateDocumentDirectoryAsync(index, documentId, cancellationToken).ConfigureAwait(false); + var path = Path.Join(this._directory, index, documentId, fileName); this._log.LogDebug("Creating file {0}", path); FileStream outputStream = File.Create(path); @@ -72,9 +79,14 @@ public async Task WriteStreamAsync(string directoryName, string fileName, } /// - public Task ReadFileAsync(string directoryName, string fileName, bool errIfNotFound = true, CancellationToken cancellationToken = default) + public Task ReadFileAsync( + string index, + string documentId, + string fileName, + bool errIfNotFound = true, + CancellationToken cancellationToken = default) { - var path = Path.Join(this._directory, directoryName, fileName); + var path = Path.Join(this._directory, index, documentId, fileName); if (!File.Exists(path)) { if (errIfNotFound) { this._log.LogError("File not found {0}", path); } @@ -86,6 +98,25 @@ public Task ReadFileAsync(string directoryName, string fileName, boo return Task.FromResult(new BinaryData(data)); } + /// + public Task DeleteDocumentDirectoryAsync( + string index, + string documentId, + CancellationToken cancellationToken = default) + { + var path = Path.Join(this._directory, index, documentId); + string[] files = Directory.GetFiles(path); + foreach (string fileName in files) + { + // Don't delete the pipeline status file + if (fileName == Constants.PipelineStatusFilename) { continue; } + + File.Delete(fileName); + } + + return Task.CompletedTask; + } + private void CreateDirectory(string path) { if (string.IsNullOrEmpty(path)) diff --git a/dotnet/CoreLib/ContentStorage/IContentStorage.cs b/dotnet/CoreLib/ContentStorage/IContentStorage.cs index 0761f0f29..e18f09fb2 100644 --- a/dotnet/CoreLib/ContentStorage/IContentStorage.cs +++ b/dotnet/CoreLib/ContentStorage/IContentStorage.cs @@ -10,45 +10,79 @@ namespace Microsoft.SemanticMemory.ContentStorage; public interface IContentStorage { /// - /// Join two path/directory names using the platform specific char + /// Create a new container, if it doesn't exist already /// - /// Left side of the path - /// Right side of the path (appended to path1) - /// Path1 concatenated with Path2 into a single path - string JoinPaths(string path1, string path2); + /// Index name + /// Async task cancellation token + Task CreateIndexDirectoryAsync( + string index, + CancellationToken cancellationToken = default); /// /// Create a new container, if it doesn't exist already /// - /// Name of the directory + /// Index name + /// Document ID /// Async task cancellation token - Task CreateDirectoryAsync(string directoryName, CancellationToken cancellationToken = default); + Task CreateDocumentDirectoryAsync( + string index, + string documentId, + CancellationToken cancellationToken = default); /// /// Create/Overwrite a file /// - /// Directory name (ie collection/directory) + /// Index name + /// Document ID /// Name of the file /// File content /// Async task cancellation token - Task WriteTextFileAsync(string directoryName, string fileName, string fileContent, CancellationToken cancellationToken = default); + Task WriteTextFileAsync( + string index, + string documentId, + string fileName, + string fileContent, + CancellationToken cancellationToken = default); /// /// Create/Overwrite a file /// - /// Directory name (ie collection/directory) + /// Index name + /// Document ID /// Name of the file /// File content /// Async task cancellation token - Task WriteStreamAsync(string directoryName, string fileName, Stream contentStream, CancellationToken cancellationToken = default); + Task WriteStreamAsync( + string index, + string documentId, + string fileName, + Stream contentStream, + CancellationToken cancellationToken = default); /// /// Fetch a file from storage /// - /// + /// Index name + /// Document ID /// /// Whether to log an error if the file does not exist. An exception will be raised anyway. - /// + /// Async task cancellation token /// File content - Task ReadFileAsync(string directoryName, string fileName, bool errIfNotFound = true, CancellationToken cancellationToken = default); + Task ReadFileAsync( + string index, + string documentId, + string fileName, + bool errIfNotFound = true, + CancellationToken cancellationToken = default); + + /// + /// Delete all artifacts of a document + /// + /// Index name + /// Document ID + /// Async task cancellation token + Task DeleteDocumentDirectoryAsync( + string index, + string documentId, + CancellationToken cancellationToken = default); } diff --git a/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/AzureFormRecognizerEngine.cs b/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/AzureFormRecognizerEngine.cs index 934a51455..412e072fc 100644 --- a/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/AzureFormRecognizerEngine.cs +++ b/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/AzureFormRecognizerEngine.cs @@ -9,6 +9,7 @@ using Azure.Identity; using Microsoft.Extensions.Logging; using Microsoft.SemanticMemory.Configuration; +using Microsoft.SemanticMemory.Diagnostics; namespace Microsoft.SemanticMemory.DataFormats.Image.AzureFormRecognizer; @@ -21,18 +22,20 @@ public class AzureFormRecognizerEngine : IOcrEngine private readonly ILogger _log; /// - /// Creates a new instance of the AzureFormRecognizerOcrEngine passing in the Form Recognizer endpoint and key. + /// Creates a new instance of the Azure Form Recognizer. /// - /// The endpoint for accessing a provisioned Azure Form Recognizer instance - /// The AzureFormRecognizerConfig config for this service. - public AzureFormRecognizerEngine(string endpoint, AzureFormRecognizerConfig config, ILogger log) + /// The AzureFormRecognizerConfig config for this service + /// Application logger + public AzureFormRecognizerEngine( + AzureFormRecognizerConfig config, + ILogger? log = null) { - this._log = log; + this._log = log ?? DefaultLogger.Instance; switch (config.Auth) { case AzureFormRecognizerConfig.AuthTypes.AzureIdentity: - this._recognizerClient = new DocumentAnalysisClient(new Uri(endpoint), new DefaultAzureCredential()); + this._recognizerClient = new DocumentAnalysisClient(new Uri(config.Endpoint), new DefaultAzureCredential()); break; case AzureFormRecognizerConfig.AuthTypes.APIKey: @@ -42,7 +45,7 @@ public AzureFormRecognizerEngine(string endpoint, AzureFormRecognizerConfig conf throw new ConfigurationException("Azure Form Recognizer API key is empty"); } - this._recognizerClient = new DocumentAnalysisClient(new Uri(endpoint), new AzureKeyCredential(config.APIKey)); + this._recognizerClient = new DocumentAnalysisClient(new Uri(config.Endpoint), new AzureKeyCredential(config.APIKey)); break; default: diff --git a/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/DependencyInjection.cs b/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/DependencyInjection.cs index 440eaee6f..4ec17122f 100644 --- a/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/DependencyInjection.cs +++ b/dotnet/CoreLib/DataFormats/Image/AzureFormRecognizer/DependencyInjection.cs @@ -12,9 +12,18 @@ public static partial class MemoryClientBuilderExtensions public static MemoryClientBuilder WithAzureFormRecognizer(this MemoryClientBuilder builder, AzureFormRecognizerConfig config) { builder.Services.AddAzureFormRecognizer(config); - return builder; } + + public static MemoryClientBuilder WithAzureFormRecognizer(this MemoryClientBuilder builder, string endpoint, string apiKey) + { + return builder.WithAzureFormRecognizer(new AzureFormRecognizerConfig + { + Auth = AzureFormRecognizerConfig.AuthTypes.APIKey, + Endpoint = endpoint, + APIKey = apiKey + }); + } } public static partial class DependencyInjection @@ -23,7 +32,7 @@ public static IServiceCollection AddAzureFormRecognizer(this IServiceCollection { return services .AddSingleton(config) - .AddTransient(); + .AddSingleton(); } public static IServiceCollection AddAzureFormRecognizer(this IServiceCollection services, string endpoint, string apiKey) diff --git a/dotnet/CoreLib/Handlers/DeleteDocumentHandler.cs b/dotnet/CoreLib/Handlers/DeleteDocumentHandler.cs new file mode 100644 index 000000000..a30acef7c --- /dev/null +++ b/dotnet/CoreLib/Handlers/DeleteDocumentHandler.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft. All rights reserved. + +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.SemanticMemory.ContentStorage; +using Microsoft.SemanticMemory.Diagnostics; +using Microsoft.SemanticMemory.MemoryStorage; +using Microsoft.SemanticMemory.Pipeline; + +namespace Microsoft.SemanticMemory.Handlers; + +public class DeleteDocumentHandler : IPipelineStepHandler +{ + private readonly IPipelineOrchestrator _orchestrator; + private readonly List _vectorDbs; + private readonly IContentStorage _contentStorage; + private readonly ILogger _log; + + public string StepName { get; } + + public DeleteDocumentHandler( + string stepName, + IPipelineOrchestrator orchestrator, + IContentStorage contentStorage, + List vectorDbs, + ILogger? log = null) + { + this.StepName = stepName; + this._orchestrator = orchestrator; + this._contentStorage = contentStorage; + this._vectorDbs = vectorDbs; + this._log = log ?? DefaultLogger.Instance; + + this._log.LogInformation("Handler '{0}' ready", stepName); + } + + /// + public async Task<(bool success, DataPipeline updatedPipeline)> InvokeAsync(DataPipeline pipeline, CancellationToken cancellationToken = default) + { + // Delete embeddings + foreach (ISemanticMemoryVectorDb db in this._vectorDbs) + { + IAsyncEnumerable records = db.GetListAsync( + indexName: pipeline.Index, + limit: -1, + filter: MemoryFilters.ByDocument(pipeline.DocumentId), + cancellationToken: cancellationToken); + + await foreach (var record in records.WithCancellation(cancellationToken)) + { + await db.DeleteAsync(indexName: pipeline.Index, record, cancellationToken: cancellationToken).ConfigureAwait(false); + } + } + + // Delete files + await this._contentStorage.DeleteDocumentDirectoryAsync( + index: pipeline.Index, + documentId: pipeline.DocumentId, + cancellationToken).ConfigureAwait(false); + + return (true, pipeline); + } +} diff --git a/dotnet/CoreLib/Memory.cs b/dotnet/CoreLib/Memory.cs index abc24964e..8673133ef 100644 --- a/dotnet/CoreLib/Memory.cs +++ b/dotnet/CoreLib/Memory.cs @@ -7,9 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.SemanticMemory.Configuration; -using Microsoft.SemanticMemory.DataFormats.Image; using Microsoft.SemanticMemory.Diagnostics; -using Microsoft.SemanticMemory.Handlers; using Microsoft.SemanticMemory.Pipeline; using Microsoft.SemanticMemory.Search; using Microsoft.SemanticMemory.WebService; @@ -32,18 +30,10 @@ public class Memory : ISemanticMemoryClient public Memory( InProcessPipelineOrchestrator orchestrator, - SearchClient searchClient, - IOcrEngine? ocrEngine = null) + SearchClient searchClient) { this._orchestrator = orchestrator ?? throw new ConfigurationException("The orchestrator is NULL"); this._searchClient = searchClient ?? throw new ConfigurationException("The search client is NULL"); - - // Default handlers - Use AddHandler to replace them. - this.AddHandler(new TextExtractionHandler("extract", this._orchestrator, ocrEngine)); - this.AddHandler(new TextPartitioningHandler("partition", this._orchestrator)); - this.AddHandler(new SummarizationHandler("summarize", this._orchestrator)); - this.AddHandler(new GenerateEmbeddingsHandler("gen_embeddings", this._orchestrator)); - this.AddHandler(new SaveEmbeddingsHandler("save_embeddings", this._orchestrator)); } /// @@ -138,6 +128,12 @@ public async Task ImportWebPageAsync( .ConfigureAwait(false); } + /// + public Task DeleteDocumentAsync(string documentId, string? index = null, CancellationToken cancellationToken = default) + { + return this._orchestrator.StartDocumentDeletionAsync(documentId: documentId, index: index, cancellationToken); + } + /// public async Task IsDocumentReadyAsync( string documentId, diff --git a/dotnet/CoreLib/MemoryService.cs b/dotnet/CoreLib/MemoryService.cs index 71ac4bf6c..c3ad24747 100644 --- a/dotnet/CoreLib/MemoryService.cs +++ b/dotnet/CoreLib/MemoryService.cs @@ -111,6 +111,12 @@ public async Task ImportWebPageAsync( .ConfigureAwait(false); } + /// + public Task DeleteDocumentAsync(string documentId, string? index = null, CancellationToken cancellationToken = default) + { + return this._orchestrator.StartDocumentDeletionAsync(documentId: documentId, index: index, cancellationToken); + } + /// public Task IsDocumentReadyAsync( string documentId, diff --git a/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemory.cs b/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemory.cs index d29e91285..605bc0df1 100644 --- a/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemory.cs +++ b/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemory.cs @@ -106,6 +106,8 @@ await client.IndexDocumentsAsync( bool withEmbeddings = false, [EnumeratorCancellation] CancellationToken cancellationToken = default) { + if (limit <= 0) { limit = int.MaxValue; } + var client = this.GetSearchClient(indexName); SearchQueryVector vectorQuery = new() @@ -123,7 +125,14 @@ await client.IndexDocumentsAsync( if (filter != null && !filter.IsEmpty()) { // We need to fetch more vectors because filters are applied after the vector search - vectorQuery.KNearestNeighborsCount = limit * 100; + try + { + checked { vectorQuery.KNearestNeighborsCount = limit * 100; } + } + catch (OverflowException) + { + vectorQuery.KNearestNeighborsCount = int.MaxValue; + } IEnumerable conditions = (from keyValue in filter.GetFilters() let fieldValue = keyValue.Value?.Replace("'", "''", StringComparison.Ordinal) @@ -167,6 +176,8 @@ public async IAsyncEnumerable GetListAsync( bool withEmbeddings = false, [EnumeratorCancellation] CancellationToken cancellationToken = default) { + if (limit <= 0) { limit = int.MaxValue; } + var client = this.GetSearchClient(indexName); var options = new SearchOptions(); @@ -208,6 +219,9 @@ public async IAsyncEnumerable GetListAsync( await foreach (SearchResult? doc in searchResult.Value.GetResultsAsync()) { + // stop after returning the amount requested, in case we fetched more to workaround the lack of pre-filtering + if (limit-- <= 0) { yield break; } + yield return doc.Document.ToMemoryRecord(withEmbeddings); } } @@ -221,7 +235,10 @@ public async Task DeleteAsync(string indexName, MemoryRecord record, Cancellatio try { this._log.LogDebug("Deleting record {0} from index {1}", id, indexName); - Response? result = await client.DeleteDocumentsAsync("id", new List { id }, cancellationToken: cancellationToken) + Response? result = await client.DeleteDocumentsAsync( + AzureCognitiveSearchMemoryRecord.IdField, + new List { id }, + cancellationToken: cancellationToken) .ConfigureAwait(false); this._log.LogTrace("Delete response status: {0}, content: {1}", result.GetRawResponse().Status, result.GetRawResponse().Content.ToString()); } diff --git a/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemoryRecord.cs b/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemoryRecord.cs index 97c3ce904..67f07916f 100644 --- a/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemoryRecord.cs +++ b/dotnet/CoreLib/MemoryStorage/AzureCognitiveSearch/AzureCognitiveSearchMemoryRecord.cs @@ -13,7 +13,7 @@ namespace Microsoft.SemanticMemory.MemoryStorage.AzureCognitiveSearch; // TODO: support bring your own index schema public sealed class AzureCognitiveSearchMemoryRecord { - private const string IdField = "id"; + internal const string IdField = "id"; internal const string VectorField = "embedding"; private const string TagsField = "tags"; private const string PayloadField = "payload"; diff --git a/dotnet/CoreLib/MemoryStorage/DevTools/SimpleVectorDb.cs b/dotnet/CoreLib/MemoryStorage/DevTools/SimpleVectorDb.cs index 3512406fd..8468ccdd5 100644 --- a/dotnet/CoreLib/MemoryStorage/DevTools/SimpleVectorDb.cs +++ b/dotnet/CoreLib/MemoryStorage/DevTools/SimpleVectorDb.cs @@ -61,6 +61,8 @@ public async Task UpsertAsync(string indexName, MemoryRecord record, Can bool withEmbeddings = false, [EnumeratorCancellation] CancellationToken cancellationToken = default) { + if (limit <= 0) { limit = int.MaxValue; } + var list = this.GetListAsync(indexName, filter, limit, withEmbeddings, cancellationToken); var records = new Dictionary(); await foreach (MemoryRecord r in list.WithCancellation(cancellationToken)) @@ -99,6 +101,8 @@ public async IAsyncEnumerable GetListAsync( bool withEmbeddings = false, [EnumeratorCancellation] CancellationToken cancellationToken = default) { + if (limit <= 0) { limit = int.MaxValue; } + Dictionary list = await this._storage.ReadAllAsync(indexName, cancellationToken).ConfigureAwait(false); foreach (KeyValuePair v in list) { @@ -108,20 +112,18 @@ public async IAsyncEnumerable GetListAsync( var match = true; if (filter != null && !filter.IsEmpty()) { - foreach (KeyValuePair> tag in record.Tags) + foreach (KeyValuePair tagFilter in filter.GetFilters()) { if (!match) { continue; } - for (int index = 0; match && index < tag.Value.Count; index++) - { - string? value = tag.Value[index]; - match = match && (record.Tags.ContainsKey(tag.Key) && record.Tags[tag.Key].Contains(value)); - } + match = match && record.Tags.ContainsKey(tagFilter.Key) && record.Tags[tagFilter.Key].Contains(tagFilter.Value); } } if (match) { + if (limit-- <= 0) { yield break; } + yield return record; } } diff --git a/dotnet/CoreLib/MemoryStorage/Qdrant/QdrantMemory.cs b/dotnet/CoreLib/MemoryStorage/Qdrant/QdrantMemory.cs index 9c9e44b87..51143851e 100644 --- a/dotnet/CoreLib/MemoryStorage/Qdrant/QdrantMemory.cs +++ b/dotnet/CoreLib/MemoryStorage/Qdrant/QdrantMemory.cs @@ -101,6 +101,7 @@ public async Task UpsertAsync( [EnumeratorCancellation] CancellationToken cancellationToken = default) { indexName = this.NormalizeIndexName(indexName); + if (limit <= 0) { limit = int.MaxValue; } var requiredTags = (filter != null && !filter.IsEmpty()) ? filter.GetFilters().Select(x => $"{x.Key}{Constants.ReservedEqualsSymbol}{x.Value}") @@ -130,6 +131,7 @@ public async IAsyncEnumerable GetListAsync( [EnumeratorCancellation] CancellationToken cancellationToken = default) { indexName = this.NormalizeIndexName(indexName); + if (limit <= 0) { limit = int.MaxValue; } var requiredTags = (filter != null && !filter.IsEmpty()) ? filter.GetFilters().Select(x => $"{x.Key}{Constants.ReservedEqualsSymbol}{x.Value}") diff --git a/dotnet/CoreLib/Pipeline/BaseOrchestrator.cs b/dotnet/CoreLib/Pipeline/BaseOrchestrator.cs index ebcabb26e..acecf435b 100644 --- a/dotnet/CoreLib/Pipeline/BaseOrchestrator.cs +++ b/dotnet/CoreLib/Pipeline/BaseOrchestrator.cs @@ -21,14 +21,12 @@ public abstract class BaseOrchestrator : IPipelineOrchestrator, IDisposable private readonly List _embeddingGenerators; private readonly ITextGeneration _textGenerator; private readonly List _defaultIngestionSteps; + private readonly IContentStorage _contentStorage; + private readonly IMimeTypeDetection _mimeTypeDetection; - protected IContentStorage ContentStorage { get; private set; } protected ILogger Log { get; private set; } protected CancellationTokenSource CancellationTokenSource { get; private set; } - /// - private IMimeTypeDetection MimeTypeDetection { get; set; } - protected BaseOrchestrator( IContentStorage contentStorage, List embeddingGenerators, @@ -39,15 +37,15 @@ protected BaseOrchestrator( ILogger? log = null) { this.Log = log ?? DefaultLogger.Instance; - this.MimeTypeDetection = mimeTypeDetection ?? new MimeTypesDetection(); this._defaultIngestionSteps = (config ?? new SemanticMemoryConfig()).DataIngestion.GetDefaultStepsOrDefaults(); - - this.ContentStorage = contentStorage; - this.CancellationTokenSource = new CancellationTokenSource(); + this._contentStorage = contentStorage; this._embeddingGenerators = embeddingGenerators; this._vectorDbs = vectorDbs; this._textGenerator = textGenerator; + this._mimeTypeDetection = mimeTypeDetection ?? new MimeTypesDetection(); + this.CancellationTokenSource = new CancellationTokenSource(); + if (embeddingGenerators?.Count == 0) { this.Log.LogWarning("No embedding generators available"); @@ -122,8 +120,6 @@ public DataPipeline PrepareNewDocumentUpload( Index = IndexExtensions.CleanName(index), DocumentId = documentId, Tags = tags, - Creation = DateTimeOffset.UtcNow, - LastUpdate = DateTimeOffset.UtcNow, FilesToUpload = filesToUpload.ToList(), }; @@ -136,10 +132,9 @@ public DataPipeline PrepareNewDocumentUpload( public async Task ReadPipelineStatusAsync(string index, string documentId, CancellationToken cancellationToken = default) { index = IndexExtensions.CleanName(index); - var dirPath = this.ContentStorage.JoinPaths(index, documentId); try { - BinaryData? content = await (this.ContentStorage.ReadFileAsync(dirPath, Constants.PipelineStatusFilename, false, cancellationToken) + BinaryData? content = await (this._contentStorage.ReadFileAsync(index, documentId, Constants.PipelineStatusFilename, false, cancellationToken) .ConfigureAwait(false)); return content == null ? null : JsonSerializer.Deserialize(content.ToString()); } @@ -160,7 +155,7 @@ public DataPipeline PrepareNewDocumentUpload( public async Task IsDocumentReadyAsync(string index, string documentId, CancellationToken cancellationToken = default) { DataPipeline? pipeline = await this.ReadPipelineStatusAsync(index: index, documentId, cancellationToken).ConfigureAwait(false); - return pipeline != null && pipeline.Complete; + return pipeline != null && pipeline.Files.Count > 0 && pipeline.Complete; } /// @@ -173,8 +168,7 @@ public Task StopAllPipelinesAsync() /// public Task ReadFileAsync(DataPipeline pipeline, string fileName, CancellationToken cancellationToken = default) { - var path = this.ContentStorage.JoinPaths(pipeline.Index, pipeline.DocumentId); - return this.ContentStorage.ReadFileAsync(path, fileName, true, cancellationToken); + return this._contentStorage.ReadFileAsync(pipeline.Index, pipeline.DocumentId, fileName, true, cancellationToken); } /// @@ -187,9 +181,8 @@ public async Task ReadTextFileAsync(DataPipeline pipeline, string fileNa /// public Task WriteFileAsync(DataPipeline pipeline, string fileName, BinaryData fileContent, CancellationToken cancellationToken = default) { - var dirPath = this.ContentStorage.JoinPaths(pipeline.Index, pipeline.DocumentId); - return this.ContentStorage.WriteStreamAsync( - dirPath, + return this._contentStorage.WriteStreamAsync( + pipeline.Index, pipeline.DocumentId, fileName, fileContent.ToStream(), cancellationToken); @@ -219,6 +212,13 @@ public ITextGeneration GetTextGenerator() return this._textGenerator; } + /// + public Task StartDocumentDeletionAsync(string documentId, string? index = null, CancellationToken cancellationToken = default) + { + var pipeline = this.PrepareDocumentDeletion(index: index, documentId: documentId); + return this.RunPipelineAsync(pipeline, cancellationToken); + } + /// public void Dispose() { @@ -226,6 +226,22 @@ public void Dispose() GC.SuppressFinalize(this); } + protected DataPipeline PrepareDocumentDeletion(string? index, string documentId) + { + if (string.IsNullOrWhiteSpace(documentId)) + { + throw new SemanticMemoryException("The document ID is empty"); + } + + var pipeline = new DataPipeline + { + Index = IndexExtensions.CleanName(index), + DocumentId = documentId, + }; + + return pipeline.Then(Constants.DeleteDocumentPipelineStepName).Build(); + } + protected async Task UploadFilesAsync(DataPipeline currentPipeline, CancellationToken cancellationToken = default) { if (currentPipeline.UploadComplete) @@ -277,9 +293,9 @@ protected async Task UpdatePipelineStatusAsync(DataPipeline pipeline, Cancellati this.Log.LogDebug("Saving pipeline status to {0}/{1}", pipeline.DocumentId, Constants.PipelineStatusFilename); try { - var dirPath = this.ContentStorage.JoinPaths(pipeline.Index, pipeline.DocumentId); - await this.ContentStorage.WriteTextFileAsync( - dirPath, + await this._contentStorage.WriteTextFileAsync( + pipeline.Index, + pipeline.DocumentId, Constants.PipelineStatusFilename, ToJson(pipeline, true), cancellationToken) @@ -310,10 +326,8 @@ private async Task UploadFormFilesAsync(DataPipeline pipeline, CancellationToken { this.Log.LogDebug("Uploading {0} files, pipeline {1}", pipeline.FilesToUpload.Count, pipeline.DocumentId); - await this.ContentStorage.CreateDirectoryAsync(pipeline.Index, cancellationToken).ConfigureAwait(false); - - var dirPath = this.ContentStorage.JoinPaths(pipeline.Index, pipeline.DocumentId); - await this.ContentStorage.CreateDirectoryAsync(dirPath, cancellationToken).ConfigureAwait(false); + await this._contentStorage.CreateIndexDirectoryAsync(pipeline.Index, cancellationToken).ConfigureAwait(false); + await this._contentStorage.CreateDocumentDirectoryAsync(pipeline.Index, pipeline.DocumentId, cancellationToken).ConfigureAwait(false); foreach (DocumentUploadRequest.UploadedFile file in pipeline.FilesToUpload) { @@ -324,12 +338,12 @@ private async Task UploadFormFilesAsync(DataPipeline pipeline, CancellationToken } this.Log.LogDebug("Uploading file: {0}", file.FileName); - var size = await this.ContentStorage.WriteStreamAsync(dirPath, file.FileName, file.FileContent, cancellationToken).ConfigureAwait(false); + var size = await this._contentStorage.WriteStreamAsync(pipeline.Index, pipeline.DocumentId, file.FileName, file.FileContent, cancellationToken).ConfigureAwait(false); string mimeType = string.Empty; try { - mimeType = this.MimeTypeDetection.GetFileType(file.FileName); + mimeType = this._mimeTypeDetection.GetFileType(file.FileName); } catch (NotSupportedException) { diff --git a/dotnet/CoreLib/Pipeline/DataPipeline.cs b/dotnet/CoreLib/Pipeline/DataPipeline.cs index 3ddc0f186..fa15d58e0 100644 --- a/dotnet/CoreLib/Pipeline/DataPipeline.cs +++ b/dotnet/CoreLib/Pipeline/DataPipeline.cs @@ -301,6 +301,8 @@ public DataPipeline Build() this.Creation = DateTimeOffset.UtcNow; this.LastUpdate = this.Creation; + this.Validate(); + return this; } diff --git a/dotnet/CoreLib/Pipeline/IPipelineOrchestrator.cs b/dotnet/CoreLib/Pipeline/IPipelineOrchestrator.cs index 5d0308309..458556565 100644 --- a/dotnet/CoreLib/Pipeline/IPipelineOrchestrator.cs +++ b/dotnet/CoreLib/Pipeline/IPipelineOrchestrator.cs @@ -123,19 +123,34 @@ public interface IPipelineOrchestrator /// /// Get list of embedding generators to use during the ingestion, e.g. to create /// multiple vectors. + /// TODO: remove and inject dependency to handlers who need this /// List GetEmbeddingGenerators(); /// /// Get list of Vector DBs where to store embeddings. + /// TODO: remove and inject dependency to handlers who need this /// - /// List GetVectorDbs(); /// /// Get the text generator used for prompts, synthetic data, answer generation, etc. + /// TODO: remove and inject dependency to handlers who need this /// TODO: support multiple generators, for different tasks, with different cost/quality. /// /// Instance of the text generator ITextGeneration GetTextGenerator(); + + /// + /// Start an asynchronous job, via handlers, to delete a specified document + /// from memory, and update all derived memories. This might be a long running + /// operation, hence the use of queue/handlers. + /// + /// Document ID + /// Optional index name + /// Async task cancellation token + Task StartDocumentDeletionAsync( + string documentId, + string? index = null, + CancellationToken cancellationToken = default); } diff --git a/dotnet/InteractiveSetup/Main.cs b/dotnet/InteractiveSetup/Main.cs index fcf661ed2..30825c2c7 100644 --- a/dotnet/InteractiveSetup/Main.cs +++ b/dotnet/InteractiveSetup/Main.cs @@ -26,6 +26,7 @@ public static class Main private static BoundedBoolean s_cfgAzureOpenAIText = new(); private static BoundedBoolean s_cfgAzureOpenAIEmbedding = new(); private static BoundedBoolean s_cfgOpenAI = new(); + private static BoundedBoolean s_cfgAzureOCR = new(); // Vectors private static BoundedBoolean s_cfgAzureCognitiveSearch = new(); @@ -53,6 +54,7 @@ public static void InteractiveSetup( s_cfgAzureOpenAIText = new(); s_cfgAzureOpenAIEmbedding = new(); s_cfgOpenAI = new(); + s_cfgAzureOCR = new(); // Vectors s_cfgAzureCognitiveSearch = new(); @@ -78,6 +80,10 @@ public static void InteractiveSetup( AzureBlobsSetup(); SimpleFileStorageSetup(); + // Image support + OCRSetup(); + AzureCognitiveFormSetup(); + // Embedding generation EmbeddingGeneratorTypeSetup(); AzureOpenAIEmbeddingSetup(); @@ -335,6 +341,52 @@ private static void OpenAISetup() }); } + private static void OCRSetup() + { + SetupUI.AskQuestionWithOptions(new QuestionWithOptions + { + Title = "Which service should be used to extract text from images?", + Options = new List + { + new("None", () => + { + AppSettings.Change(x => { x.ImageOcrType = "None"; }); + }), + new("Azure Form Recognizer", () => + { + AppSettings.Change(x => { x.ImageOcrType = "AzureFormRecognizer"; }); + s_cfgAzureOCR.Value = true; + }), + new("-exit-", SetupUI.Exit), + } + }); + } + + private static void AzureCognitiveFormSetup() + { + if (!s_cfgAzureOCR.Value) { return; } + + s_cfgAzureOCR.Value = false; + const string ServiceName = "AzureFormRecognizer"; + + if (!AppSettings.GetCurrentConfig().Services.TryGetValue(ServiceName, out var config)) + { + config = new Dictionary + { + { "Auth", "ApiKey" }, + { "Endpoint", "" }, + { "APIKey", "" }, + }; + } + + AppSettings.Change(x => x.Services[ServiceName] = new Dictionary + { + { "Auth", "ApiKey" }, + { "Endpoint", SetupUI.AskOpenQuestion("Azure Cognitive Services ", config["Endpoint"].ToString()) }, + { "APIKey", SetupUI.AskPassword("Azure Cognitive Services ", config["APIKey"].ToString()) }, + }); + } + private static void OrchestrationTypeSetup() { SetupUI.AskQuestionWithOptions(new QuestionWithOptions diff --git a/dotnet/Service/Program.cs b/dotnet/Service/Program.cs index 6fcf3cfce..666a29323 100644 --- a/dotnet/Service/Program.cs +++ b/dotnet/Service/Program.cs @@ -12,7 +12,6 @@ using Microsoft.SemanticMemory; using Microsoft.SemanticMemory.Configuration; using Microsoft.SemanticMemory.Diagnostics; -using Microsoft.SemanticMemory.Handlers; using Microsoft.SemanticMemory.InteractiveSetup; using Microsoft.SemanticMemory.WebService; @@ -37,15 +36,8 @@ appBuilder.Services.AddEndpointsApiExplorer(); appBuilder.Services.AddSwaggerGen(); -// Handlers - Register these handlers to run as hosted services. At start -// each service cass IPipelineOrchestrator.AddHandlerAsync() to register the in the orchestrator. -appBuilder.Services.AddHandlerAsHostedService("extract"); -appBuilder.Services.AddHandlerAsHostedService("summarize"); -appBuilder.Services.AddHandlerAsHostedService("partition"); -appBuilder.Services.AddHandlerAsHostedService("gen_embeddings"); -appBuilder.Services.AddHandlerAsHostedService("save_embeddings"); - // Inject memory client and its dependencies +// Note: pass the current service collection to the builder, in order to start the pipeline handlers ISemanticMemoryClient memory = new MemoryClientBuilder(appBuilder.Services).FromAppSettings().Build(); appBuilder.Services.AddSingleton(memory); @@ -84,7 +76,7 @@ ISemanticMemoryClient service, ILogger log) => { - log.LogTrace("New upload request"); + log.LogTrace("New upload HTTP request"); // Note: .NET doesn't yet support binding multipart forms including data and files (HttpDocumentUploadRequest input, bool isValid, string errMsg) = await HttpDocumentUploadRequest.BindHttpRequestAsync(request).ConfigureAwait(false); @@ -116,6 +108,22 @@ }) .Produces(StatusCodes.Status202Accepted); + // Delete document endpoint + app.MapDelete(Constants.HttpDocumentsEndpoint, + async Task ( + [FromQuery(Name = Constants.WebServiceIndexField)] + string? index, + [FromQuery(Name = Constants.WebServiceDocumentIdField)] + string documentId, + ISemanticMemoryClient service, + ILogger log) => + { + log.LogTrace("New delete document HTTP request"); + await service.DeleteDocumentAsync(documentId: documentId, index: index); + return Results.Accepted(); + }) + .Produces(StatusCodes.Status202Accepted); + // Ask endpoint app.MapPost(Constants.HttpAskEndpoint, async Task ( @@ -136,7 +144,7 @@ async Task ( ISemanticMemoryClient service, ILogger log) => { - log.LogTrace("New search request"); + log.LogTrace("New search HTTP request"); SearchResult answer = await service.SearchAsync(query: query.Query, index: query.Index, query.Filter); return Results.Ok(answer); }) @@ -149,8 +157,10 @@ async Task ( string? index, [FromQuery(Name = Constants.WebServiceDocumentIdField)] string documentId, - ISemanticMemoryClient service) => + ISemanticMemoryClient service, + ILogger log) => { + log.LogTrace("New document status HTTP request"); index = IndexExtensions.CleanName(index); if (string.IsNullOrEmpty(documentId)) diff --git a/examples/001-dotnet-Serverless/001-dotnet-Serverless.csproj b/examples/001-dotnet-Serverless/001-dotnet-Serverless.csproj index 740135ad1..3d420245a 100644 --- a/examples/001-dotnet-Serverless/001-dotnet-Serverless.csproj +++ b/examples/001-dotnet-Serverless/001-dotnet-Serverless.csproj @@ -70,6 +70,10 @@ Always + + + Always + diff --git a/examples/001-dotnet-Serverless/Program.cs b/examples/001-dotnet-Serverless/Program.cs index 7fd22e67e..ac2ebb5e2 100644 --- a/examples/001-dotnet-Serverless/Program.cs +++ b/examples/001-dotnet-Serverless/Program.cs @@ -10,188 +10,258 @@ * * Note: no web service required, each file is processed in this process. */ -var memory = new MemoryClientBuilder().WithOpenAIDefaults(Env.Var("OPENAI_API_KEY")).BuildServerlessClient(); -// To use Azure Cognitive Search => .WithAzureCognitiveSearch(Env.Var("ACS_ENDPOINT"), Env.Var("ACS_API_KEY")) -// To use Qdrant docker => .WithQdrant("http://127.0.0.1:6333") -// To use Azure Form Recognizer OCR => .WithAzureFormRecognizer(Env.Var("AFR_ENDPOINT"), Env.Var("AFR_API_KEY")) - -// etc. +var memory = new MemoryClientBuilder() + // To use Azure Blobs => .WithAzureBlobsStorage(new AzureBlobsConfig {...}) + // To use Azure Cognitive Search => .WithAzureCognitiveSearch(Env.Var("ACS_ENDPOINT"), Env.Var("ACS_API_KEY")) + // To use Qdrant docker => .WithQdrant("http://127.0.0.1:6333") + // To use Azure Form Recognizer OCR => .WithAzureFormRecognizer(Env.Var("AZURE_COG_SVCS_ENDPOINT"), Env.Var("AZURE_COG_SVCS_API_KEY")) + .WithOpenAIDefaults(Env.Var("OPENAI_API_KEY")) + .BuildServerlessClient(); + +// Use these boolean to enable/disable parts of the examples below +bool ingestion = true; +bool useImages = false; // Enable Azure Form Recognizer OCR to use this +bool retrieval = true; +bool purge = true; // ======================= -// === UPLOAD ============ +// === INGESTION ========= // ======================= -// Uploading some text, without using files -if (!await memory.IsDocumentReadyAsync(documentId: "doc000")) -{ - Console.WriteLine("Uploading doc000"); - await memory.ImportTextAsync("In physics, mass–energy equivalence is the relationship between mass and energy " + - "in a system's rest frame, where the two quantities differ only by a multiplicative " + - "constant and the units of measurement. The principle is described by the physicist " + - "Albert Einstein's formula: E = m*c^2", documentId: "doc000"); -} -else +var toDelete = new List(); +if (ingestion) { - Console.WriteLine("doc000 already uploaded."); -} - -// Simple file upload (checking if the file exists) -if (!await memory.IsDocumentReadyAsync(documentId: "doc001")) -{ - Console.WriteLine("Uploading doc001"); + Console.WriteLine("\n====================================\n"); + + // Uploading some text, without using files. Hold a copy of the ID to delete it later. + Console.WriteLine("Uploading text about E=mc^2"); + var docId = await memory.ImportTextAsync("In physics, mass–energy equivalence is the relationship between mass and energy " + + "in a system's rest frame, where the two quantities differ only by a multiplicative " + + "constant and the units of measurement. The principle is described by the physicist " + + "Albert Einstein's formula: E = m*c^2"); + toDelete.Add(docId); + + // Simple file upload, with document ID + toDelete.Add("doc001"); + Console.WriteLine("Uploading article file about Carbon"); await memory.ImportDocumentAsync("file1-Wikipedia-Carbon.txt", documentId: "doc001"); -} -else -{ - Console.WriteLine("doc001 already uploaded."); -} -// Uploading multiple files and adding a user tag -if (!await memory.IsDocumentReadyAsync(documentId: "doc002")) -{ - Console.WriteLine("Uploading doc002"); - await memory.ImportDocumentAsync(new Document("doc002") - .AddFiles(new[] { "file2-Wikipedia-Moon.txt", "file3-lorem-ipsum.docx", "file4-SK-Readme.pdf" }) - .AddTag("user", "Blake")); -} -else -{ - Console.WriteLine("doc002 already uploaded."); + // Extract memory from images (if OCR enabled) + if (useImages) + { + toDelete.Add("img001"); + Console.WriteLine("Uploading Image file with a news about a conference sponsored by Microsoft"); + await memory.ImportDocumentAsync(new Document("img001").AddFiles(new[] { "file6-ANWC-image.jpg" })); + } + + // Uploading multiple files and adding a user tag, checking if the document already exists + toDelete.Add("doc002"); + if (!await memory.IsDocumentReadyAsync(documentId: "doc002")) + { + Console.WriteLine("Uploading a text file, a Word doc, and a PDF about Semantic Kernel"); + await memory.ImportDocumentAsync(new Document("doc002") + .AddFiles(new[] { "file2-Wikipedia-Moon.txt", "file3-lorem-ipsum.docx", "file4-SK-Readme.pdf" }) + .AddTag("user", "Blake")); + } + else + { + Console.WriteLine("doc002 already uploaded."); + } + + // Categorizing files with several tags + toDelete.Add("doc003"); + if (!await memory.IsDocumentReadyAsync(documentId: "doc003")) + { + Console.WriteLine("Uploading a PDF with a news about NASA and Orion"); + await memory.ImportDocumentAsync(new Document("doc003") + .AddFile("file5-NASA-news.pdf") + .AddTag("user", "Taylor") + .AddTag("collection", "meetings") + .AddTag("collection", "NASA") + .AddTag("collection", "space") + .AddTag("type", "news")); + } + else + { + Console.WriteLine("doc003 already uploaded."); + } + + // Downloading web pages + toDelete.Add("webPage1"); + if (!await memory.IsDocumentReadyAsync("webPage1")) + { + Console.WriteLine("Uploading https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md"); + await memory.ImportWebPageAsync("https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md", documentId: "webPage1"); + } + else + { + Console.WriteLine("webPage1 already uploaded."); + } } -// Categorizing files with several tags -if (!await memory.IsDocumentReadyAsync(documentId: "doc003")) -{ - Console.WriteLine("Uploading doc003"); - await memory.ImportDocumentAsync(new Document("doc003") - .AddFile("file5-NASA-news.pdf") - .AddTag("user", "Taylor") - .AddTag("collection", "meetings") - .AddTag("collection", "NASA") - .AddTag("collection", "space") - .AddTag("type", "news")); -} -else -{ - Console.WriteLine("doc003 already uploaded."); -} +// ======================= +// === RETRIEVAL ========= +// ======================= -// Downloading web pages -if (!await memory.IsDocumentReadyAsync("webPage1")) -{ - Console.WriteLine("Uploading https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md"); - await memory.ImportWebPageAsync("https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md", documentId: "webPage1"); -} -else +if (retrieval) { - Console.WriteLine("webPage1 already uploaded."); -} + Console.WriteLine("\n====================================\n"); -// ======================= -// === ASK =============== -// ======================= + // Question without filters + var question = "What's E = m*c^2?"; + Console.WriteLine($"Question: {question}"); -// Question without filters -var question = "What's E = m*c^2?"; -Console.WriteLine($"\n\nQuestion: {question}"); + var answer = await memory.AskAsync(question); + Console.WriteLine($"\nAnswer: {answer.Result}"); -var answer = await memory.AskAsync(question); -Console.WriteLine($"\nAnswer: {answer.Result}\n\n"); + Console.WriteLine("\n====================================\n"); -// Another question without filters -question = "What's Semantic Kernel?"; -Console.WriteLine($"\n\nQuestion: {question}"); + // Another question without filters + question = "What's Semantic Kernel?"; + Console.WriteLine($"Question: {question}"); -answer = await memory.AskAsync(question); -Console.WriteLine($"\nAnswer: {answer.Result}\n\n Sources:\n"); + answer = await memory.AskAsync(question); + Console.WriteLine($"\nAnswer: {answer.Result}\n\n Sources:\n"); -foreach (var x in answer.RelevantSources) -{ - Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); -} + foreach (var x in answer.RelevantSources) + { + Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + } -// Filter question by "user" tag -question = "Any news from NASA about Orion?"; -Console.WriteLine($"\n\nQuestion: {question}"); + if (useImages) + { + Console.WriteLine("\n====================================\n"); + question = "Which conference is Microsoft sponsoring?"; + Console.WriteLine($"Question: {question}"); -answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Blake")); -Console.WriteLine($"\nBlake Answer: {answer.Result}\n"); + answer = await memory.AskAsync(question); + Console.WriteLine($"\nAnswer: {answer.Result}\n\n Sources:\n"); -answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Taylor")); -Console.WriteLine($"\nTaylor Answer: {answer.Result}\n\n Sources:\n"); + foreach (var x in answer.RelevantSources) + { + Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + } + } -foreach (var x in answer.RelevantSources) -{ - Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + Console.WriteLine("\n====================================\n"); + + // Filter question by "user" tag + question = "Any news from NASA about Orion?"; + Console.WriteLine($"Question: {question}"); + + // Blake doesn't know + answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Blake")); + Console.WriteLine($"\nBlake Answer: {answer.Result}"); + + // Taylor knows + answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Taylor")); + Console.WriteLine($"\nTaylor Answer: {answer.Result}\n Sources:\n"); + + foreach (var x in answer.RelevantSources) + { + Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + } + + Console.WriteLine("\n====================================\n"); + + // Filter question by "type" tag, there are news but no articles + question = "What is Orion?"; + Console.WriteLine($"Question: {question}"); + + answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "article")); + Console.WriteLine($"\nArticles: {answer.Result}"); + + answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "news")); + Console.WriteLine($"\nNews: {answer.Result}"); } -// Filter question by "type" tag -question = "What is Orion?"; -Console.WriteLine($"\n\nQuestion: {question}"); +// ======================= +// === PURGE ============= +// ======================= -answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "article")); -Console.WriteLine($"\nArticles: {answer.Result}\n\n"); +if (purge) +{ + Console.WriteLine("===================================="); -answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "news")); -Console.WriteLine($"\nNews: {answer.Result}\n\n"); + foreach (var docId in toDelete) + { + Console.WriteLine($"Deleting memories derived from {docId}"); + await memory.DeleteDocumentAsync(docId); + } +} // ReSharper disable CommentTypo /* ==== OUTPUT ==== -Uploading doc000 -doc001 already uploaded. -doc002 already uploaded. -doc003 already uploaded. +==================================== + +Uploading text about E=mc^2 +Uploading article file about Carbon +Uploading Image file with a news about a conference sponsored by Microsoft +Uploading a text file, a Word doc, and a PDF about Semantic Kernel +Uploading a PDF with a news about NASA and Orion +Uploading https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md +==================================== -Question: What's mc^2? +Question: What's E = m*c^2? -Answer: mc^2 refers to the equation E=mc^2, which is the famous mass-energy equivalence equation proposed by -Albert Einstein in his theory of relativity. In this equation, E represents energy, m represents mass, and -c represents the speed of light in a vacuum. The equation states that energy is equal to mass multiplied by -the square of the speed of light. This equation shows the relationship between mass and energy, suggesting -that mass can be converted into energy and vice versa. It is a fundamental equation in physics and has -significant implications in various fields, including nuclear energy and particle physics. +Answer: E = m*c^2 is the formula that represents the mass-energy equivalence principle in physics. It was proposed by Albert Einstein and states that the energy (E) of an object is equal to its mass (m) multiplied by the speed of light (c) squared. This equation shows that mass and energy are interchangeable and that a small amount of mass can be converted into a large amount of energy. It is a fundamental concept in understanding the relationship between mass and energy in the universe. +==================================== Question: What's Semantic Kernel? -warn: Microsoft.SemanticMemory.Search.SearchClient[0] - No memories available -Answer: INFO NOT FOUND +Answer: Semantic Kernel is a lightweight SDK (Software Development Kit) that allows integration of AI Large Language Models (LLMs) with conventional programming languages. It combines natural language semantic functions, traditional code native functions, and embeddings-based memory to enhance applications with AI. SK supports prompt templating, function chaining, vectorized memory, and intelligent planning capabilities. It encapsulates several design patterns from AI research, such as prompt chaining, recursive reasoning, summarization, zero/few-shot learning, contextual memory, and more. SK is open-source and developers are invited to contribute to its development. Sources: + - file4-SK-Readme.pdf - doc002/f26cfdda742d4cfd99d614055552e11a [Tuesday, August 29, 2023] + - content.url - webPage1/ed0b16e24ec74dbb924a113f9a9e254a [Tuesday, August 29, 2023] + - file3-lorem-ipsum.docx - doc002/cac17ef53fa6423980f0961aa007ec51 [Tuesday, August 29, 2023] + - content.txt - c8f87691264d4f3abd0f90948b7f6021202308280656304478730/dd2ecc0d4228468c870f41dc4dfb0a27 [Tuesday, August 29, 2023] + - content.txt - 49bac5d2ea50432cb67b784253818e40202308280658336581710/9f97247b66f84298a643da398b1097f7 [Tuesday, August 29, 2023] +==================================== -Question: Any news from NASA about Orion? +Question: Which conference is Microsoft sponsoring? + +Answer: Microsoft is sponsoring the Automotive News World Congress 2023 event in Detroit. + + Sources: -Blake Answer: INFO NOT FOUND. + - file6-ANWC-image.jpg - img001/efdb3a0f2aca4035b840aaa3898c1892 [Tuesday, August 29, 2023] + - file5-NASA-news.pdf - doc003/acc1767a64974c3480a323d488dd4acc [Tuesday, August 29, 2023] + - file4-SK-Readme.pdf - doc002/f26cfdda742d4cfd99d614055552e11a [Tuesday, August 29, 2023] + - content.url - webPage1/ed0b16e24ec74dbb924a113f9a9e254a [Tuesday, August 29, 2023] + - file3-lorem-ipsum.docx - doc002/cac17ef53fa6423980f0961aa007ec51 [Tuesday, August 29, 2023] +==================================== -Taylor Answer: Yes, NASA has invited media to see the new test version of the Orion spacecraft and the -hardware teams will use to recover the capsule and astronauts upon their return from space during the Artemis -II mission. The event will take place at Naval Base San Diego and personnel involved in recovery operations -from NASA, the U.S. Navy, and the U.S. Air Force will be available to speak with media. Teams are currently -conducting the first in a series of tests in the Pacific Ocean to demonstrate and evaluate the processes, -procedures, and hardware for recovery operations for crewed Artemis missions. The tests will help prepare -the team for Artemis II, NASA’s first crewed mission under Artemis that will send four astronauts in Orion -around the Moon to checkout systems ahead of future lunar missions. +Question: Any news from NASA about Orion? + +Blake Answer: INFO NOT FOUND +Taylor Answer: Yes, NASA has invited media to see the test version of the Orion spacecraft and the recovery hardware that will be used for the Artemis II mission. The event will take place at Naval Base San Diego on August 2nd. Personnel from NASA, the U.S. Navy, and the U.S. Air Force will be available for interviews. The recovery operations team is currently conducting tests in the Pacific Ocean to prepare for the Artemis II mission, which will send four astronauts around the Moon. The crew of Artemis II will participate in recovery testing at sea next year. Sources: - - file5-NASA-news.pdf - doc003/8b99b4534cc54a14860c15bd6c28beb2 [Monday, August 14, 2023] + - file5-NASA-news.pdf - doc003/acc1767a64974c3480a323d488dd4acc [Tuesday, August 29, 2023] +==================================== Question: What is Orion? +warn: Microsoft.SemanticMemory.Search.SearchClient[0] + No memories available Articles: INFO NOT FOUND +News: Orion is a spacecraft developed by NASA for human space exploration. It is designed to carry astronauts beyond low Earth orbit, including missions to the Moon and potentially Mars. The spacecraft is part of NASA's Artemis program, which aims to return humans to the Moon by 2024. The Artemis II mission will be the first crewed mission under the Artemis program and will send four astronauts around the Moon to test systems for future lunar missions. The recovery operations team is currently conducting tests in the Pacific Ocean to prepare for the Artemis II mission, and the crew of Artemis II will participate in recovery testing at sea next year. -warn: Microsoft.SemanticMemory.Search.SearchClient[0] - No memories available +==================================== -News: Orion is a spacecraft developed by NASA for crewed missions, including the Artemis program which aims -to send astronauts to the Moon. NASA is currently conducting tests to prepare for the recovery of the Orion -spacecraft and astronauts upon their return from space. +Deleting memories derived from 15af4991c22d4728bd2f515e7617c5ee202901120542397729100 +Deleting memories derived from doc001 +Deleting memories derived from doc002 +Deleting memories derived from doc003 +Deleting memories derived from webPage1 */ diff --git a/examples/001-dotnet-Serverless/file6-ANWC-image.jpg b/examples/001-dotnet-Serverless/file6-ANWC-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..066896fc83d83f981998f23d981d85aac119cea7 GIT binary patch literal 146980 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®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®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

UnWp|H)B-s{#~#SQ!h>4hd+&RVrj<%F_d}< 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

UnWp|H)B-s{#~#SQ!h>4hd+&RVrj<%F_d}< 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 Always + + + Always + diff --git a/examples/002-dotnet-WebClient/Program.cs b/examples/002-dotnet-WebClient/Program.cs index 4fe7bebde..6bb354319 100644 --- a/examples/002-dotnet-WebClient/Program.cs +++ b/examples/002-dotnet-WebClient/Program.cs @@ -15,198 +15,270 @@ var memory = MemoryClientBuilder.BuildWebClient("http://127.0.0.1:9001/"); +// Use these boolean to enable/disable parts of the examples below +bool ingestion = true; +bool useImages = true; // Enable Azure Form Recognizer OCR to use this +bool retrieval = true; +bool purge = true; + // ======================= -// === UPLOAD ============ +// === INGESTION ========= // ======================= -// Simple file upload (checking if the file exists) - -// Uploading some text, without using files -if (!await memory.IsDocumentReadyAsync(documentId: "doc000")) -{ - Console.WriteLine("Uploading doc000"); - await memory.ImportTextAsync("In physics, mass–energy equivalence is the relationship between mass and energy " + - "in a system's rest frame, where the two quantities differ only by a multiplicative " + - "constant and the units of measurement. The principle is described by the physicist " + - "Albert Einstein's formula: E = m*c^2", documentId: "doc000"); -} -else -{ - Console.WriteLine("doc000 already uploaded."); -} - -if (!await memory.IsDocumentReadyAsync(documentId: "doc001")) +var toDelete = new List(); +if (ingestion) { - Console.WriteLine("Uploading doc001"); + Console.WriteLine("\n====================================\n"); + + // Uploading some text, without using files. Hold a copy of the ID to delete it later. + Console.WriteLine("Uploading text about E=mc^2"); + var docId = await memory.ImportTextAsync("In physics, mass–energy equivalence is the relationship between mass and energy " + + "in a system's rest frame, where the two quantities differ only by a multiplicative " + + "constant and the units of measurement. The principle is described by the physicist " + + "Albert Einstein's formula: E = m*c^2"); + toDelete.Add(docId); + + // Simple file upload, with document ID + toDelete.Add("doc001"); + Console.WriteLine("Uploading article file about Carbon"); await memory.ImportDocumentAsync("file1-Wikipedia-Carbon.txt", documentId: "doc001"); -} -else -{ - Console.WriteLine("doc001 already uploaded."); -} - -// Uploading multiple files and adding a user tag -if (!await memory.IsDocumentReadyAsync(documentId: "doc002")) -{ - Console.WriteLine("Uploading doc002"); - await memory.ImportDocumentAsync(new Document("doc002") - .AddFiles(new[] { "file2-Wikipedia-Moon.txt", "file3-lorem-ipsum.docx", "file4-SK-Readme.pdf" }) - .AddTag("user", "Blake")); -} -else -{ - Console.WriteLine("doc002 already uploaded."); -} -// Categorizing files with several tags -if (!await memory.IsDocumentReadyAsync(documentId: "doc003")) -{ - Console.WriteLine("Uploading doc003"); - await memory.ImportDocumentAsync(new Document("doc003") - .AddFile("file5-NASA-news.pdf") - .AddTag("user", "Taylor") - .AddTag("collection", "meetings") - .AddTag("collection", "NASA") - .AddTag("collection", "space") - .AddTag("type", "news")); -} -else -{ - Console.WriteLine("doc003 already uploaded."); -} - -// Downloading web pages -if (!await memory.IsDocumentReadyAsync("webPage1")) -{ - Console.WriteLine("Uploading https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md"); - await memory.ImportWebPageAsync("https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md", documentId: "webPage1"); -} -else -{ - Console.WriteLine("webPage1 already uploaded."); + // Extract memory from images (if OCR enabled) + if (useImages) + { + toDelete.Add("img001"); + Console.WriteLine("Uploading Image file with a news about a conference sponsored by Microsoft"); + await memory.ImportDocumentAsync(new Document("img001").AddFiles(new[] { "file6-ANWC-image.jpg" })); + } + + // Uploading multiple files and adding a user tag, checking if the document already exists + toDelete.Add("doc002"); + if (!await memory.IsDocumentReadyAsync(documentId: "doc002")) + { + Console.WriteLine("Uploading a text file, a Word doc, and a PDF about Semantic Kernel"); + await memory.ImportDocumentAsync(new Document("doc002") + .AddFiles(new[] { "file2-Wikipedia-Moon.txt", "file3-lorem-ipsum.docx", "file4-SK-Readme.pdf" }) + .AddTag("user", "Blake")); + } + else + { + Console.WriteLine("doc002 already uploaded."); + } + + // Categorizing files with several tags + toDelete.Add("doc003"); + if (!await memory.IsDocumentReadyAsync(documentId: "doc003")) + { + Console.WriteLine("Uploading a PDF with a news about NASA and Orion"); + await memory.ImportDocumentAsync(new Document("doc003") + .AddFile("file5-NASA-news.pdf") + .AddTag("user", "Taylor") + .AddTag("collection", "meetings") + .AddTag("collection", "NASA") + .AddTag("collection", "space") + .AddTag("type", "news")); + } + else + { + Console.WriteLine("doc003 already uploaded."); + } + + // Downloading web pages + toDelete.Add("webPage1"); + if (!await memory.IsDocumentReadyAsync("webPage1")) + { + Console.WriteLine("Uploading https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md"); + await memory.ImportWebPageAsync("https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md", documentId: "webPage1"); + } + else + { + Console.WriteLine("webPage1 already uploaded."); + } } // ======================= // === WATCH PROGRESS ==== // ======================= -while ( - !await memory.IsDocumentReadyAsync(documentId: "doc001") - || !await memory.IsDocumentReadyAsync(documentId: "doc002") - || !await memory.IsDocumentReadyAsync(documentId: "doc003") - || !await memory.IsDocumentReadyAsync(documentId: "webPage1") -) +Console.WriteLine("\n====================================\n"); + +foreach (var docId in toDelete) { - Console.WriteLine("Waiting for memory ingestion to complete..."); - await Task.Delay(TimeSpan.FromSeconds(2)); + while (!await memory.IsDocumentReadyAsync(documentId: docId)) + { + Console.WriteLine("Waiting for memory ingestion to complete..."); + await Task.Delay(TimeSpan.FromSeconds(2)); + } } // ======================= -// === ASK =============== +// === RETRIEVAL ========= // ======================= -// Question without filters -var question = "What's mc^2?"; -Console.WriteLine($"\n\nQuestion: {question}"); +if (retrieval) +{ + Console.WriteLine("\n====================================\n"); -var answer = await memory.AskAsync(question); -Console.WriteLine($"\nAnswer: {answer.Result}\n\n"); + // Question without filters + var question = "What's E = m*c^2?"; + Console.WriteLine($"Question: {question}"); -// Another question without filters -question = "What's Semantic Kernel?"; -Console.WriteLine($"\n\nQuestion: {question}"); + var answer = await memory.AskAsync(question); + Console.WriteLine($"\nAnswer: {answer.Result}"); -answer = await memory.AskAsync(question); -Console.WriteLine($"\nAnswer: {answer.Result}\n\n Sources:\n"); + Console.WriteLine("\n====================================\n"); -foreach (var x in answer.RelevantSources) -{ - Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); -} + // Another question without filters + question = "What's Semantic Kernel?"; + Console.WriteLine($"Question: {question}"); -// Filter question by "user" tag -question = "Any news from NASA about Orion?"; -Console.WriteLine($"\n\nQuestion: {question}"); + answer = await memory.AskAsync(question); + Console.WriteLine($"\nAnswer: {answer.Result}\n\n Sources:\n"); -answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Blake")); -Console.WriteLine($"\nBlake Answer: {answer.Result}\n"); + foreach (var x in answer.RelevantSources) + { + Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + } -answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Taylor")); -Console.WriteLine($"\nTaylor Answer: {answer.Result}\n\n Sources:\n"); + if (useImages) + { + Console.WriteLine("\n====================================\n"); + question = "Which conference is Microsoft sponsoring?"; + Console.WriteLine($"Question: {question}"); -foreach (var x in answer.RelevantSources) -{ - Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + answer = await memory.AskAsync(question); + Console.WriteLine($"\nAnswer: {answer.Result}\n\n Sources:\n"); + + foreach (var x in answer.RelevantSources) + { + Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + } + } + + Console.WriteLine("\n====================================\n"); + + // Filter question by "user" tag + question = "Any news from NASA about Orion?"; + Console.WriteLine($"Question: {question}"); + + // Blake doesn't know + answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Blake")); + Console.WriteLine($"\nBlake Answer: {answer.Result}"); + + // Taylor knows + answer = await memory.AskAsync(question, MemoryFilters.ByTag("user", "Taylor")); + Console.WriteLine($"\nTaylor Answer: {answer.Result}\n Sources:\n"); + + foreach (var x in answer.RelevantSources) + { + Console.WriteLine($" - {x.SourceName} - {x.Link} [{x.Partitions.First().LastUpdate:D}]"); + } + + Console.WriteLine("\n====================================\n"); + + // Filter question by "type" tag, there are news but no articles + question = "What is Orion?"; + Console.WriteLine($"Question: {question}"); + + answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "article")); + Console.WriteLine($"\nArticles: {answer.Result}"); + + answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "news")); + Console.WriteLine($"\nNews: {answer.Result}"); } -// Filter question by "type" tag -question = "What is Orion?"; -Console.WriteLine($"\n\nQuestion: {question}"); +// ======================= +// === PURGE ============= +// ======================= -answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "article")); -Console.WriteLine($"\nArticles: {answer.Result}\n\n"); +if (purge) +{ + Console.WriteLine("===================================="); -answer = await memory.AskAsync(question, MemoryFilters.ByTag("type", "news")); -Console.WriteLine($"\nNews: {answer.Result}\n\n"); + foreach (var docId in toDelete) + { + Console.WriteLine($"Deleting memories derived from {docId}"); + await memory.DeleteDocumentAsync(docId); + } +} // ReSharper disable CommentTypo /* ==== OUTPUT ==== -doc001 already uploaded. -doc002 already uploaded. -doc003 already uploaded. +Uploading text about E=mc^2 +Uploading article file about Carbon +Uploading Image file with a news about a conference sponsored by Microsoft +Uploading a text file, a Word doc, and a PDF about Semantic Kernel +Uploading a PDF with a news about NASA and Orion +Uploading https://raw.githubusercontent.com/microsoft/semantic-memory/main/README.md +==================================== + +Waiting for memory ingestion to complete... +Waiting for memory ingestion to complete... +Waiting for memory ingestion to complete... +Waiting for memory ingestion to complete... +Waiting for memory ingestion to complete... +Waiting for memory ingestion to complete... + +==================================== + +Question: What's E = m*c^2? + +Answer: E = m*c^2 is the formula for mass-energy equivalence in physics, where mass and energy are equivalent in a system's rest frame, differing only by a multiplicative constant and the units of measurement. + +==================================== Question: What's Semantic Kernel? -Answer: Semantic Kernel is a lightweight SDK that enables integration of AI Large Language Models -(LLMs) with conventional programming languages. It combines natural language semantic functions, -traditional code native functions, and embeddings-based memory to add value to applications with AI. -It supports prompt templating, function chaining, vectorized memory, and intelligent planning -capabilities out of the box. Semantic Kernel encapsulates several design patterns from the latest -in AI research, such that developers can infuse their applications with plugins like prompt chaining, -recursive reasoning, summarization, zero/few-shot learning, contextual memory, long-term memory, -embeddings, semantic indexing, planning, retrieval-augmented generation and accessing external -knowledge stores as well as your own data. It is available to explore AI and build apps with C# -and Python. +Answer: Semantic Kernel is a lightweight SDK that allows integration of AI Large Language Models with conventional programming languages. It combines natural language semantic functions, traditional code native functions, and embeddings-based memory to add value to applications with AI. The SK community is invited to contribute to the development of the SDK through GitHub Discussions, opening GitHub Issues, sending PRs, and joining the Discord community. SK supports prompt templating, function chaining, vectorized memory, and intelligent planning capabilities out of the box. The SDK supports several design patterns from the latest in AI research, such as prompt chaining, recursive reasoning, summarization, zero/few-shot learning, contextual memory, long-term memory, embeddings, semantic indexing, planning, retrieval-augmented generation, and accessing external knowledge stores as well as your own data. Sources: - - file4-SK-Readme.pdf - doc002/b426b222c4434d6d9c1e4a4101bfd8e3 [Monday, August 14, 2023] - - file3-lorem-ipsum.docx - doc002/46296fc7999e4a888f790bc81d591c54 [Monday, August 14, 2023] - - file2-Wikipedia-Moon.txt - doc002/d8bc5b9400704878b0bbbffa34dc504c [Monday, August 14, 2023] - - file1-Wikipedia-Carbon.txt - doc001/b9333cdc30a34870b2022358e327ff8c [Monday, August 14, 2023] - - file5-NASA-news.pdf - doc003/8b99b4534cc54a14860c15bd6c28beb2 [Monday, August 14, 2023] + - file4-SK-Readme.pdf - doc002/136dec405e694b199bd62bb3b2195453 [Tuesday, August 29, 2023] + - content.url - webPage1/acca787af5bc4294b103bb583b31d3da [Tuesday, August 29, 2023] + - file3-lorem-ipsum.docx - doc002/78590246af224918a0a96e96d34c8f38 [Tuesday, August 29, 2023] + - content.txt - 988f0db29c114ed38267980f1af4bb26202308280750056313730/d9c41b08e22547dfa66899b48b75b2b8 [Tuesday, August 29, 2023] +==================================== -Question: Any news from NASA about Orion? +Question: Which conference is Microsoft sponsoring? -Blake Answer: INFO NOT FOUND. +Answer: Microsoft is sponsoring the Automotive News World Congress 2023 event in Detroit on September 12, 2023. + Sources: + + - file6-ANWC-image.jpg - img001/a4c04abf11344c9790640b00714c3177 [Tuesday, August 29, 2023] + - content.url - webPage1/701ca43b9bbd40a3b4500c31c60fc6bc [Tuesday, August 29, 2023] + - file5-NASA-news.pdf - doc003/8e8ee6081255407da573fdd297f0719a [Tuesday, August 29, 2023] + - file4-SK-Readme.pdf - doc002/5f529a9d13d24f2faa9c8941f46a9169 [Tuesday, August 29, 2023] + - file3-lorem-ipsum.docx - doc002/75d848ced15749699b65fefc8a888400 [Tuesday, August 29, 2023] -Taylor Answer: Yes, NASA has invited media to see the new test version of the Orion spacecraft -and the hardware teams will use to recover the capsule and astronauts upon their return from -space during the Artemis II mission. Personnel involved in recovery operations from NASA, the -U.S. Navy, and the U.S. Air Force will be available to speak with media. The event will take -place at Naval Base San Diego on August 2, 2023. Teams are currently conducting the first in -a series of tests in the Pacific Ocean to demonstrate and evaluate the processes, procedures, -and hardware for recovery operations for crewed Artemis missions. The tests will help prepare -the team for Artemis II, NASA’s first crewed mission under Artemis that will send four -astronauts in Orion around the Moon to checkout systems ahead of future lunar missions. +==================================== + +Question: Any news from NASA about Orion? +Blake Answer: INFO NOT FOUND. + +Taylor Answer: Yes, NASA has invited media to see the new test version of the Orion spacecraft and the hardware teams will use to recover the capsule and astronauts upon their return from space during the Artemis II mission. The event will take place at Naval Base San Diego and personnel involved in recovery operations from NASA, the U.S. Navy, and the U.S. Air Force will be available to speak with media. The Artemis II crew will participate in recovery testing at sea next year. Sources: - - file5-NASA-news.pdf - doc003/8b99b4534cc54a14860c15bd6c28beb2 [Monday, August 14, 2023] + - file5-NASA-news.pdf - doc003/3cc5eefb83ac40cc80b445a1d70b71f0 [Tuesday, August 29, 2023] +==================================== Question: What is Orion? Articles: INFO NOT FOUND +News: Orion is a spacecraft developed by NASA for crewed missions, including the Artemis II mission which will send four astronauts around the Moon to checkout systems ahead of future lunar missions. NASA has invited media to see the new test version of the Orion spacecraft and the hardware teams will use to recover the capsule and astronauts upon their return from space during the Artemis II mission. - -News: Orion is a spacecraft developed by NASA for crewed missions, including the Artemis -program which aims to send astronauts to the Moon. NASA has invited media to see the -recovery craft for the Artemis II mission, which will use the Orion spacecraft. +==================================== +Deleting memories derived from 9e1ecae343cb4134a7ec955625d51aa6202901120755348131790 +Deleting memories derived from doc001 +Deleting memories derived from img001 +Deleting memories derived from doc002 +Deleting memories derived from doc003 +Deleting memories derived from webPage1 */ diff --git a/examples/002-dotnet-WebClient/file6-ANWC-image.jpg b/examples/002-dotnet-WebClient/file6-ANWC-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..066896fc83d83f981998f23d981d85aac119cea7 GIT binary patch literal 146980 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