From c1e5ac42d1250789d3e676d4e5f359d13b266a06 Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Tue, 20 Aug 2024 14:31:15 +0100 Subject: [PATCH 1/8] Add the Text Search ADR and preferred abstractions --- docs/decisions/00NN-text-search.md | 986 ++++++++++++++++++ .../diagrams/search-abstractions.png | Bin 0 -> 103667 bytes .../diagrams/text-search-abstraction.mmd | 81 ++ .../diagrams/text-search-abstraction.png | Bin 0 -> 88651 bytes .../diagrams/text-search-imemorystore.mmd | 35 + .../diagrams/text-search-imemorystore.png | Bin 0 -> 109131 bytes .../text-search-iwebsearchengineconnector.mmd | 23 + .../text-search-iwebsearchengineconnector.png | Bin 0 -> 104277 bytes .../Search/BasicFilterOptions.cs | 39 + .../Search/EqualityFilterClause.cs | 25 + .../Search/FilterClause.cs | 27 + .../Search/FilterClauseType.cs | 14 + .../Search/ITextSearch.cs | 51 + .../Search/KernelSearchResults.cs | 53 + .../Search/TextSearchOptions.cs | 31 + .../Search/TextSearchResult.cs | 43 + 16 files changed, 1408 insertions(+) create mode 100644 docs/decisions/00NN-text-search.md create mode 100644 docs/decisions/diagrams/search-abstractions.png create mode 100644 docs/decisions/diagrams/text-search-abstraction.mmd create mode 100644 docs/decisions/diagrams/text-search-abstraction.png create mode 100644 docs/decisions/diagrams/text-search-imemorystore.mmd create mode 100644 docs/decisions/diagrams/text-search-imemorystore.png create mode 100644 docs/decisions/diagrams/text-search-iwebsearchengineconnector.mmd create mode 100644 docs/decisions/diagrams/text-search-iwebsearchengineconnector.png create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/BasicFilterOptions.cs create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs create mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs diff --git a/docs/decisions/00NN-text-search.md b/docs/decisions/00NN-text-search.md new file mode 100644 index 000000000000..a76581053f1c --- /dev/null +++ b/docs/decisions/00NN-text-search.md @@ -0,0 +1,986 @@ +--- +# These are optional elements. Feel free to remove any of them. +status: proposed +contact: markwallace +date: {YYYY-MM-DD when the decision was last updated} +deciders: sergeymenshykh, markwallace, rbarreto, dmytrostruk, westey +consulted: stephentoub, matthewbolanos, shrojans +informed: +--- + +# Text Search Abstraction + +## Context and Problem Statement + +Semantic Kernel has support for searching using popular Vector databases e.g. Azure AI Search, Chroma, Milvus and also Web search engines e.g. Bing, Google. +There are two sets of abstractions and plugins depending on whether the developer wants to perform search against a Vector database or a Web search engine. +The current abstractions are experimental and the purpose of this ADR is to progress the design of the abstractions so that they can graduate to non experimental status. + +There are two main use cases we need to support: + +1. Enable Prompt Engineers to easily insert grounding information in prompts i.e. support for Retrieval-Augmented Generation scenarios. +2. Enable Developers to register search plugins which can be called by the LLM to retrieve additional data it needs to respond to a user ask i.e. support for Function Calling scenarios. + +What both of these scenarios have in common is that we need to generate a `KernelPlugin` from a search service and register it for use with the `Kernel`. + +### Retrieval-Augmented Generation Scenarios + +Retrieval-Augmented Generation (RAG) is a process of optimizing the output of an LLM, so it references authoritative data which may not be part of its training data when generating a response. This reduce the likelihood of hallucinations and also enables the provision of citations which the end user can use to independently verify the response from the LLM. RAG works by retrieving additional data that is relevant to the use query and then augment the prompt with this data before sending to the LLM. + +Consider the following sample where the top Bing search results are included as additional data in the prompt. + +```csharp +// Create a kernel with OpenAI chat completion +IKernelBuilder kernelBuilder = Kernel.CreateBuilder(); +kernelBuilder.AddOpenAIChatCompletion( + modelId: TestConfiguration.OpenAI.ChatModelId, + apiKey: TestConfiguration.OpenAI.ApiKey, + httpClient: httpClient); +Kernel kernel = kernelBuilder.Build(); + +// Create a text search using the Bing search service +var textSearch = new BingTextSearch(new(TestConfiguration.Bing.ApiKey)); + +// Build a text search plugin with Bing search service and add to the kernel +var searchPlugin = textSearch.CreateKernelPluginWithTextSearch("SearchPlugin"); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +var query = "What is the Semantic Kernel?"; +KernelArguments arguments = new() { { "query", query } }; +Console.WriteLine(await kernel.InvokePromptAsync("{{SearchPlugin.Search $query}}. {{$query}}", arguments)); +``` + +This example works as follows: + +1. Create a `BingTextSearch` which can perform Bing search queries. +2. Wrap the `BingTextSearch` as a plugin which can be called when rendering a prompt. +3. Insert a call to the plugin which performs a search using the user query. +4. The prompt will be augmented with the abstract from the top search results. + +**Note:** In this case the abstract from the search result is the only data included in the prompt. +The LLM should use this data if it considers it relevant but there is no feedback mechanism to the user which would allow +them to verify the source of the data. + +The following sample shows a solution to this problem. + +```csharp +// Create a kernel with OpenAI chat completion +IKernelBuilder kernelBuilder = Kernel.CreateBuilder(); +kernelBuilder.AddOpenAIChatCompletion( + modelId: TestConfiguration.OpenAI.ChatModelId, + apiKey: TestConfiguration.OpenAI.ApiKey, + httpClient: httpClient); +Kernel kernel = kernelBuilder.Build(); + +// Create a text search using the Bing search service +var textSearch = new BingTextSearch(new(TestConfiguration.Bing.ApiKey)); + +// Build a text search plugin with Bing search service and add to the kernel +var searchPlugin = textSearch.CreateKernelPluginWithGetSearchResults("SearchPlugin"); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +var query = "What is the Semantic Kernel?"; +string promptTemplate = @" +{{#with (SearchPlugin-GetSearchResults query)}} + {{#each this}} + Name: {{Name}} + Value: {{Value}} + Link: {{Link}} + ----------------- + {{/each}} +{{/with}} + +{{query}} + +Include citations to the relevant information where it is referenced in the response. +"; + +KernelArguments arguments = new() { { "query", query } }; +HandlebarsPromptTemplateFactory promptTemplateFactory = new(); +Console.WriteLine(await kernel.InvokePromptAsync( + promptTemplate, + arguments, + templateFormat: HandlebarsPromptTemplateFactory.HandlebarsTemplateFormat, + promptTemplateFactory: promptTemplateFactory +)); +``` + +This example works as follows: + +1. Create a `BingTextSearch` which can perform Bing search queries and convert the response into a normalized format. +2. The normalized format is a Semantic Kernel abstraction called `TextSearchResult` which includes a name, value and link for each search result. +3. Wrap the `BingTextSearch` as a plugin which can be called when rendering a prompt. +4. Insert a call to the plugin which performs a search using the user query. +5. The prompt will be augmented with the name, value and link from the top search results. +6. The prompt also instructs the LLM to include citations to the relevant information in the response. + +An example response would look like this: + +``` +The Semantic Kernel (SK) is a lightweight and powerful SDK developed by Microsoft that integrates Large Language Models (LLMs) such as OpenAI, Azure OpenAI, and Hugging Face with traditional programming languages like C#, Python, and Java ([GitHub](https://github.com/microsoft/semantic-kernel)). It facilitates the combination of natural language processing capabilities with pre-existing APIs and code, enabling developers to add large language capabilities to their applications swiftly ([What It Is and Why It Matters](https://techcommunity.microsoft.com/t5/microsoft-developer-community/semantic-kernel-what-it-is-and-why-it-matters/ba-p/3877022)). + +The Semantic Kernel serves as a middleware that translates the AI model's requests into function calls, effectively bridging the gap between semantic functions (LLM tasks) and native functions (traditional computer code) ([InfoWorld](https://www.infoworld.com/article/2338321/semantic-kernel-a-bridge-between-large-language-models-and-your-code.html)). It also enables the automatic orchestration and execution of tasks using natural language prompting across multiple languages and platforms ([Hello, Semantic Kernel!](https://devblogs.microsoft.com/semantic-kernel/hello-world/)). + +In addition to its core capabilities, Semantic Kernel supports advanced functionalities like prompt templating, chaining, and planning, which allow developers to create intricate workflows tailored to specific use cases ([Architecting AI Apps](https://devblogs.microsoft.com/semantic-kernel/architecting-ai-apps-with-semantic-kernel/)). + +By describing your existing code to the AI models, Semantic Kernel effectively marshals the request to the appropriate function, returns results back to the LLM, and enables the AI agent to generate a final response ([Quickly Start](https://learn.microsoft.com/en-us/semantic-kernel/get-started/quick-start-guide)). This process brings unparalleled productivity and new experiences to application users ([Hello, Semantic Kernel!](https://devblogs.microsoft.com/semantic-kernel/hello-world/)). + +The Semantic Kernel is an indispensable tool for developers aiming to build advanced AI applications by seamlessly integrating large language models with traditional programming frameworks ([Comprehensive Guide](https://gregdziedzic.com/understanding-semantic-kernel-a-comprehensive-guide/)). +``` + +**Note:** In this case there is a link to the relevant information so the end user can follow the links to verify the response. + +The next sample shows an alternative solution that uses Bing Text Search and the built-in result type. + +```csharp +// Create a kernel with OpenAI chat completion +IKernelBuilder kernelBuilder = Kernel.CreateBuilder(); +kernelBuilder.AddOpenAIChatCompletion( + modelId: TestConfiguration.OpenAI.ChatModelId, + apiKey: TestConfiguration.OpenAI.ApiKey, + httpClient: httpClient); +Kernel kernel = kernelBuilder.Build(); + +// Create a text search using the Bing search service +var textSearch = new BingTextSearch(new(TestConfiguration.Bing.ApiKey)); + +// Build a text search plugin with Bing search service and add to the kernel +var searchPlugin = textSearch.CreateKernelPluginWithGetBingWebPages("SearchPlugin"); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +var query = "What is the Semantic Kernel?"; +string promptTemplate = @" +{{#with (SearchPlugin-GetBingWebPages query)}} + {{#each this}} + Name: {{Name}} + Snippet: {{Snippet}} + Link: {{DisplayUrl}} + Date Last Crawled: {{DateLastCrawled}} + ----------------- + {{/each}} +{{/with}} + +{{query}} + +Include citations to and the date of the relevant information where it is referenced in the response. +"; +KernelArguments arguments = new() { { "query", query } }; +HandlebarsPromptTemplateFactory promptTemplateFactory = new(); +Console.WriteLine(await kernel.InvokePromptAsync( + promptTemplate, + arguments, + templateFormat: HandlebarsPromptTemplateFactory.HandlebarsTemplateFormat, + promptTemplateFactory: promptTemplateFactory +)); +``` + +This example works as follows: + +1. Create a `BingTextSearch` which can perform Bing search queries. +2. The default format is a Bing specific class called `BingWebPage` which includes a name, snippet, display url and date last crawled for each search result. +3. Wrap the `BingTextSearch` as a plugin which can be called when rendering a prompt. +4. Insert a call to the plugin which performs a search using the user query. +5. The prompt will be augmented with the name, snippet, display url and date last crawled from the top search results. +6. The prompt also instructs the LLM to include citations to and date of the relevant information in the response. + +An example response would look like this: + +``` +Semantic Kernel is an open-source development kit designed to facilitate the integration of advanced AI models into existing C#, Python, or Java codebases. It serves as an efficient middleware that enables rapid delivery of enterprise-grade AI solutions (Microsoft Learn, 2024-08-14). + +One of the standout features of Semantic Kernel is its lightweight SDK, which allows developers to blend conventional programming languages with Large Language Model (LLM) AI capabilities through prompt templating, chaining, and planning (Semantic Kernel Blog, 2024-08-10). + +This AI SDK uses natural language prompting to create and execute semantic AI tasks across multiple languages and platforms, offering developers a simple yet powerful programming model to add large language capabilities to their applications in a matter of minutes (Microsoft Developer Community, 2024-08-13). + +Semantic Kernel also leverages function calling—a native feature of most LLMs—enabling the models to request specific functions to fulfill user requests, thereby streamlining the planning process (Microsoft Learn, 2024-08-14). + +The toolkit is versatile and extends support to multiple programming environments. For instance, Semantic Kernel for Java is compatible with Java 8 and above, making it accessible to a wide range of Java developers (Semantic Kernel Blog, 2024-08-14). + +Additionally, Sketching an architecture with Semantic Kernel can simplify business automation using models from platforms such as OpenAI, Azure OpenAI, and Hugging Face (Semantic Kernel Blog, 2024-08-14). + +For .NET developers, Semantic Kernel is highly recommended for working with AI in .NET applications, offering a comprehensive guide on incorporating Semantic Kernel into projects and understanding its core concepts (Microsoft Learn, 2024-08-14). + +Last but not least, Semantic Kernel has an extension for Visual Studio Code that facilitates the design and testing of semantic functions, enabling developers to efficiently integrate and test AI models with their existing data (GitHub, 2024-08-14). + +References: +- Microsoft Learn. "Introduction to Semantic Kernel." Last crawled: 2024-08-14. +- Semantic Kernel Blog. "Hello, Semantic Kernel!" Last crawled: 2024-08-10. +- Microsoft Developer Community. "Semantic Kernel: What It Is and Why It Matters." Last crawled: 2024-08-13. +- Microsoft Learn. "How to quickly start with Semantic Kernel." Last crawled: 2024-08-14. +- Semantic Kernel Blog. "Introducing Semantic Kernel for Java." Last crawled: 2024-08-14. +- Microsoft Learn. "Semantic Kernel overview for .NET." Last crawled: 2024-08-14. +- GitHub. "microsoft/semantic-kernel." Last crawled: 2024-08-14. +``` + +In the previous samples a snippet of text from the web page is used as the relevant information. The url to the full page content is also available so the full page could be downloaded and used. There may be other search implementations that don't include any relevant information and just include a link, this next examples shows how to handle this case. + +```csharp +// Build a text search plugin with Bing search service and add to the kernel +var searchPlugin = KernelPluginFactory.CreateFromFunctions("SearchPlugin", null, [CreateGetFullWebPages(textSearch)]); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +var query = "What is the Semantic Kernel?"; +string promptTemplate = @" +{{#with (SearchPlugin-GetFullWebPages query)}} + {{#each this}} + Name: {{Name}} + Value: {{Value}} + Link: {{Link}} + ----------------- + {{/each}} +{{/with}} + +{{query}} + +Include citations to the relevant information where it is referenced in the response. +"; +KernelArguments arguments = new() { { "query", query } }; +HandlebarsPromptTemplateFactory promptTemplateFactory = new(); +Console.WriteLine(await kernel.InvokePromptAsync( + promptTemplate, + arguments, + templateFormat: HandlebarsPromptTemplateFactory.HandlebarsTemplateFormat, + promptTemplateFactory: promptTemplateFactory +)); +``` + +In this sample we call `BingSearchExample.CreateGetFullWebPagesOptions(textSearch)` to create the options that define the search plugin. + +The code for this method looks like this: + +```csharp +private static KernelFunction CreateGetFullWebPages(ITextSearch textSearch, BasicFilterOptions? basicFilter = null) +{ + async Task> GetFullWebPagesAsync(Kernel kernel, KernelFunction function, KernelArguments arguments, CancellationToken cancellationToken) + { + arguments.TryGetValue("query", out var query); + if (string.IsNullOrEmpty(query?.ToString())) + { + return []; + } + + var parameters = function.Metadata.Parameters; + + arguments.TryGetValue("count", out var count); + arguments.TryGetValue("skip", out var skip); + SearchOptions searchOptions = new() + { + Count = (count as int?) ?? 2, + Offset = (skip as int?) ?? 0, + BasicFilter = basicFilter + }; + + var result = await textSearch.SearchAsync(query.ToString()!, searchOptions, cancellationToken).ConfigureAwait(false); + var resultList = new List(); + + using HttpClient client = new(); + await foreach (var item in result.Results.WithCancellation(cancellationToken).ConfigureAwait(false)) + { + string? value = item.Snippet; + try + { + if (item.Url is not null) + { + value = await client.GetStringAsync(new Uri(item.Url), cancellationToken); + value = ConvertHtmlToPlainText(value); + } + } + catch (HttpRequestException) + { + } + + resultList.Add(new() { Name = item.Name, Value = value, Link = item.Url }); + } + + return resultList; + } + + var options = new KernelFunctionFromMethodOptions() + { + FunctionName = "GetFullWebPages", + Description = "Perform a search for content related to the specified query. The search will return the name, full web page content and link for the related content.", + Parameters = + [ + new KernelParameterMetadata("query") { Description = "What to search for", IsRequired = true }, + new KernelParameterMetadata("count") { Description = "Number of results", IsRequired = false, DefaultValue = 2 }, + new KernelParameterMetadata("skip") { Description = "Number of results to skip", IsRequired = false, DefaultValue = 0 }, + ], + ReturnParameter = new() { ParameterType = typeof(KernelSearchResults) }, + }; + + return KernelFunctionFactory.CreateFromMethod(GetFullWebPagesAsync, options); +} +``` + +The custom `CreateGetFullWebPages` will result in a search plugin with a single function called `GetFullWebPages`, this method works as follows: + +1. It uses the `BingTextSearch` instances for retrieve the top pages for the specified query. +2. For each web page is reads the full HTML content using the url and then converts in to a plain text representation. + +Here's an example of what the response will look like: + +``` + The Semantic Kernel (SK) is an open-source development kit from Microsoft designed to facilitate the integration of large language models (LLMs) into AI applications. It acts as middleware, enabling the rapid development of enterprise-grade solutions by providing a flexible, modular, and extensible programming model that supports multiple languages like C#, Python, and Java [^1^][^4^]. + +### Key Features: + +1. **AI Service Integration**: + - The Semantic Kernel supports popular AI models from providers like OpenAI, Azure OpenAI, and Hugging Face. It abstracts the complexity of these services, making it easier to integrate them into applications using traditional programming languages [^1^][^3^][^5^]. + +2. **Extensibility and Modularity**: + - Semantic Kernel leverages plugins and OpenAPI specifications to integrate seamlessly with existing codebases. This enables developers to maximize their current investments while extending functionalities through connectors and new AI capabilities [^1^][^2^][^5^]. + +3. **Orchestrating AI Tasks**: + - Semantic Kernel uses "planners" to orchestrate the execution of functions, prompts, and API calls as needed. The planners coordinate multi-step processes to fulfill complex tasks based on a user's request, using predefined or dynamic execution plans [^2^][^7^]. + +4. **Memory and Context Management**: + - It employs various types of memory such as local storage, key-value pairs, and vector (or semantic) search to maintain the context of interactions. This helps in preserving coherence and relevance in the outputs generated by the AI models [^8^]. + +5. **Responsible AI and Observability**: + - The toolkit includes built-in logging, telemetry, and filtering support to enhance security and enable responsible AI deployment at scale. This ensures adherence to ethical guidelines and helps monitor the AI agents’ performance [^1^][^4^]. + +6. **Flexible Integration with Traditional Code**: + - Developers can create native functions and semantic functions using SQL and other data manipulation techniques to extend the capabilities of the Semantic Kernel. This hybrid integration of AI and conventional code supports complex, real-world applications [^6^]. + +### Practical Uses: + +- **Chatbots and Conversational Agents**: + - By combining natural language prompting with API capabilities, Semantic Kernel allows the creation of intelligent chatbots that can interact dynamically with users [^6^]. + +- **Automation of Business Processes**: + - AI agents built with SK can automate various business operations by interpreting natural language requests and executing corresponding actions through API integrations [^2^]. + +- **Enhanced Search and Data Retrieval**: + - By using semantic memory and vector databases, SK facilitates advanced search functionalities that go beyond simple keyword matching, providing more accurate and contextually relevant search results [^8^]. + +### Getting Started: + +Developers can get started with Semantic Kernel by following quick start guides and tutorials available on Microsoft Learn and GitHub [^3^][^4^][^5^]. + +For more detailed information, visit the official [Microsoft Learn page](https://learn.microsoft.com/en-us/semantic-kernel/overview/) or the [GitHub repository](https://github.com/microsoft/semantic-kernel). + +[^1^]: [Introduction to Semantic Kernel | Microsoft Learn](https://learn.microsoft.com/en-us/semantic-kernel/overview/) +[^2^]: [Semantic Kernel: What It Is and Why It Matters | Microsoft Tech Community](https://techcommunity.microsoft.com/t5/microsoft-developer-community/semantic-kernel-what-it-is-and-why-it-matters/ba-p/3877022) +[^3^]: [How to quickly start with Semantic Kernel | Microsoft Learn](https://learn.microsoft.com/en-us/semantic-kernel/get-started/quick-start-guide) +[^4^]: [Understanding the kernel in Semantic Kernel | Microsoft Learn](https://learn.microsoft.com/en-us/semantic-kernel/concepts/kernel) +[^5^]: [Hello, Semantic Kernel! | Semantic Kernel](https://devblogs.microsoft.com/semantic-kernel/hello-world/) +[^6^]: [How to Get Started using Semantic Kernel .NET | Semantic Kernel](https://devblogs.microsoft.com/semantic-kernel/how-to-get-started-using-semantic-kernel-net/) +[^7^]: [Understanding Semantic Kernel](https://valoremreply.com/post/understanding-semantic-kernel/) +[^8^]: [Semantic Kernel: A bridge between large language models and your code | InfoWorld](https://www.infoworld.com/article/2338321/semantic-kernel-a-bridge-between-large-language-models-and-your-code.html) +``` + +**Note:** The token usage increases significantly if the full web pages are used. +In the above example the total token count is `26836` compared to `1081` if snippets of the web page are used. + + +### Function Calling Scenarios + +Function calling allows you to connect LLMs to external tools and systems. +This capability can be used to enable an LLM to retrieve relevant information it needs in order to return a response to a user query. +In the context of this discussion we want to allow an LLM to perform a search to return relevant information. +We also want to enable developers to easily customize the search operations to improve the LLMs ability to retrieve the most relevant information. + +We need to support the following use cases: + +1. Enable developers to adapt an arbitrary text search implementation to be a search plugin which can be called by an LLM to perform searches. + - Search results can be returned as text, or in a normalized format, or is a proprietary format associated with the text search implementation. +1. Enable developers to easily customize the search plugin, typical customizations will include: + - Alter the search function metadata i.e. name, description, parameter details + - Alter which search function(s) are included in the plugin + - Alter the search function(s) behavior + +Consider the following sample where the LLM can call Bing search to help it respond to the user ask. + +```csharp +// Create a kernel with OpenAI chat completion +IKernelBuilder kernelBuilder = Kernel.CreateBuilder(); +kernelBuilder.AddOpenAIChatCompletion( + modelId: TestConfiguration.OpenAI.ChatModelId, + apiKey: TestConfiguration.OpenAI.ApiKey, + httpClient: httpClient); +Kernel kernel = kernelBuilder.Build(); + +// Create a search service with Bing search service +var textSearch = new BingTextSearch(new(TestConfiguration.Bing.ApiKey)); + +// Build a text search plugin with Bing search service and add to the kernel +var searchPlugin = textSearch.CreateKernelPluginWithTextSearch("SearchPlugin"); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions }; +KernelArguments arguments = new(settings); +Console.WriteLine(await kernel.InvokePromptAsync("What is the Semantic Kernel?", arguments)); +``` + +This example works as follows: + +1. Create a BingTextSearch which can perform Bing search queries. +1. Wrap the BingTextSearch as a plugin which can be advertised to the LLM. +1. Enable automatic function calling, which allows the LLM to call Bing search to retrieve relevant information. + +**Note:** The `TextSearchKernelPluginFactory.CreateFromTextSearch` factory method is used to create the search plugin. +This method will create a plugin with a `Search` function which returns the search results as a collection of `string` instances. + +An example response would look like this: + +``` +The Semantic Kernel is an open-source development kit aimed at integrating the latest AI models into various programming languages, such as C#, Python, or Java. It serves as a middleware enabling rapid delivery of enterprise-grade AI solutions. Key features and capabilities of the Semantic Kernel include: + +1. **Function Call Planning**: It leverages function calling—a native feature of most large language models (LLMs)—to allow these models to request specific functions to satisfy user requests. + +2. **Semantic Function Design**: The Semantic Kernel extension for Visual Studio Code simplifies the design and testing of semantic functions, providing an interface for creating and evaluating these functions with existing models and data. + +3. **Programming Model**: It introduces a programming model that combines conventional programming languages with AI "prompts" through prompt templating, chaining, and planning capabilities. + +4. **Multi-Language Support**: Compatible with programming in languages like C#, Python, and Java, ensuring broad accessibility and flexibility. + +5. **AI Agent Creation**: Facilitates building AI agents that can call existing code, thus automating business processes using models from OpenAI, Azure OpenAI, Hugging Face, and more. + +The Semantic Kernel helps developers quickly add large language capabilities to their applications, allowing the creation of smart, adaptable systems that can naturally interact with human users. +``` + +**Note:** In this case the abstract from the search result is the only data included in the prompt. The LLM should use this data if it considers it relevant but there is no feedback mechanism to the user which would allow them to verify the source of the data. + +The following sample shows a solution to this problem. + +```csharp +// Create a kernel with OpenAI chat completion +IKernelBuilder kernelBuilder = Kernel.CreateBuilder(); +kernelBuilder.AddOpenAIChatCompletion( + modelId: TestConfiguration.OpenAI.ChatModelId, + apiKey: TestConfiguration.OpenAI.ApiKey, + httpClient: httpClient); +Kernel kernel = kernelBuilder.Build(); + +// Create a search service with Bing search service +var textSearch = new BingTextSearch(new(TestConfiguration.Bing.ApiKey)); + +// Build a text search plugin with Bing search service and add to the kernel +var searchPlugin = textSearch.CreateKernelPluginWithGetSearchResults("SearchPlugin"); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions }; +KernelArguments arguments = new(settings); +Console.WriteLine(await kernel.InvokePromptAsync("What is the Semantic Kernel? Include citations to the relevant information where it is referenced in the response.", arguments)); +``` + +There is just one change in the sample, the plugin is created using the `TextSearchKernelPluginFactory.CreateFromTextSearchResults` factory method. +This method will create a plugin with a `Search` function which returns a collection of `TextSearchResult` instances which in turn will contain a link which can be used to provide a citation. + +An example response would look like this: + +``` + The Semantic Kernel is an open-source software development kit (SDK) that facilitates the integration of advanced AI models into applications. It allows developers to harness the power of large language models (LLMs) for building innovative AI solutions. Semantic Kernel supports C#, Python, and Java, and it emphasizes security, modularity, and flexibility, making it suitable for enterprise-grade applications. + +Key Features: +1. **Integration of AI Models**: Semantic Kernel enables developers to incorporate AI models from platforms such as OpenAI and Hugging Face into their codebase. This allows for creating powerful AI agents that can automate a variety of tasks. + +2. **Semantic Functions**: The SDK provides tools to design and test semantic functions. These functions facilitate natural language processing capabilities in applications, allowing for more intuitive user interactions ([GitHub - microsoft/semantic-kernel](https://github.com/microsoft/semantic-kernel)). + +3. **Comprehensive Documentation and Guides**: Detailed guides and documentation are available to help developers get started quickly. They cover everything from installing the SDK to building AI agents and creating robust AI solutions ([Introduction to Semantic Kernel | Microsoft Learn](https://learn.microsoft.com/en-us/semantic-kernel/overview/), [How to quickly start with Semantic Kernel | Microsoft Learn](https://learn.microsoft.com/en-us/semantic-kernel/get-started/quick-start-guide)). + +4. **Support for Enterprise Applications**: The kernel is designed to provide enterprise-grade services and plugins, ensuring scalability and robustness for large and complex applications ([Architecting AI Apps with Semantic Kernel | Semantic Kernel](https://devblogs.microsoft.com/semantic-kernel/architecting-ai-apps-with-semantic-kernel/)). + +5. **Integration with Popular Tools**: Semantic Kernel can be seamlessly integrated with conventional programming languages and popular development environments, providing tools to extend functionalities with minimal effort ([GitHub - microsoft/semantic-kernel](https://github.com/microsoft/semantic-kernel)). + +For more detailed information, the following sources can be referenced: +- [Introduction to Semantic Kernel | Microsoft Learn](https://learn.microsoft.com/en-us/semantic-kernel/overview/) +- [Semantic Kernel documentation | Microsoft Learn](https://learn.microsoft.com/en-us/semantic-kernel/) +- [GitHub - microsoft/semantic-kernel](https://github.com/microsoft/semantic-kernel) + +These resources offer comprehensive insights into using the Semantic Kernel to leverage AI technology effectively in software development. +``` + +The next sample shows how a developer can customize the configuration of the search plugin. + +```csharp +// Create a kernel with OpenAI chat completion +IKernelBuilder kernelBuilder = Kernel.CreateBuilder(); +kernelBuilder.AddOpenAIChatCompletion( + modelId: TestConfiguration.OpenAI.ChatModelId, + apiKey: TestConfiguration.OpenAI.ApiKey, + httpClient: httpClient); +Kernel kernel = kernelBuilder.Build(); + +// Create a search service with Bing search service +var textSearch = new BingTextSearch(new(TestConfiguration.Bing.ApiKey)); + +// Build a text search plugin with Bing search service and add to the kernel +var basicFilter = new BasicFilterOptions().Equality("site", "devblogs.microsoft.com"); +var searchPlugin = KernelPluginFactory.CreateFromFunctions("SearchPlugin", "Search Microsoft Dev Blogs site", [textSearch.CreateGetSearchResults(basicFilter)]); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions }; +KernelArguments arguments = new(settings); +Console.WriteLine(await kernel.InvokePromptAsync("What is the Semantic Kernel? Include citations to the relevant information where it is referenced in the response.", arguments)); +``` + +This sample provides a description for the search plugin i.e., in this case we only want to search the Microsoft Developer Blogs site and also the options for creating the plugin. The options allow the search plugin function definition(s) to be specified i.e., in this case we want to use a default search function that includes a basic filter which specifies the only site to include is `devblogs.microsoft.com`. + +An example response would look like this and you will note that all of the citations are from `devblogs.microsoft.com`: + +``` +The Semantic Kernel (SK) is a lightweight Software Development Kit (SDK) that facilitates the integration of conventional programming languages like C# and Python with the latest advancements in Large Language Models (LLM) AI, such as prompt templating, chaining, and planning capabilities. It enables the building of AI solutions that can leverage models from platforms like OpenAI, Azure OpenAI, and Hugging Face ([Hello, Semantic Kernel!](https://devblogs.microsoft.com/semantic-kernel/hello-world/)). + +Semantic Kernel is incredibly versatile, allowing developers to create advanced AI applications by incorporating AI agents into their applications. These agents can interact with code, automate business processes, and manage multiple LLMs with ease. The framework also supports pre-built features like planners to simplify orchestration and is fully compatible with .NET Dependency Injection abstractions ([Build AI Applications with ease using Semantic Kernel](https://devblogs.microsoft.com/semantic-kernel/build-ai-applications-with-ease-using-semantic-kernel-and-net-aspire/), [How to Get Started using Semantic Kernel .NET](https://devblogs.microsoft.com/semantic-kernel/how-to-get-started-using-semantic-kernel-net/)). + +For more information and the latest updates from the Semantic Kernel team, you can visit their [official blog](https://devblogs.microsoft.com/semantic-kernel/). +``` + +In the previous example the site has hard coded. It is also possible to allow the LLM to extract the site from the user query. In the example below a custom search function is created which includes an additional argument to allow the LLM to set the site. + +```csharp +// Create a kernel with OpenAI chat completion +IKernelBuilder kernelBuilder = Kernel.CreateBuilder(); +kernelBuilder.AddOpenAIChatCompletion( + modelId: TestConfiguration.OpenAI.ChatModelId, + apiKey: TestConfiguration.OpenAI.ApiKey, + httpClient: httpClient); +Kernel kernel = kernelBuilder.Build(); + +// Create a search service with Bing search service +var textSearch = new BingTextSearch(new(TestConfiguration.Bing.ApiKey)); + +// Build a text search plugin with Bing search service and add to the kernel +var searchPlugin = KernelPluginFactory.CreateFromFunctions("SearchPlugin", "Search Microsoft Dev Blogs site", [CreateSearchBySite(textSearch)]); +kernel.Plugins.Add(searchPlugin); + +// Invoke prompt and use text search plugin to provide grounding information +OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions }; +KernelArguments arguments = new(settings); +Console.WriteLine(await kernel.InvokePromptAsync("What is the Semantic Kernel? Only include results from devblogs.microsoft.com. Include citations to the relevant information where it is referenced in the response.", arguments)); +``` + +The code below shows how the custom search function is created. + +- The `KernelFunction` includes an additional optional parameter called `site` +- If the `site` parameter is provided a `BasicFilterOptions` instance is created which will cause Bing to return responses only from that site +- A custom function description and parameter description are provided to help the LLM in using this method. + +```csharp +private static KernelFunction CreateSearchBySite(ITextSearch textSearch, BasicFilterOptions? basicFilter = null, MapSearchResultToString? mapToString = null) +{ + async Task> SearchAsync(Kernel kernel, KernelFunction function, KernelArguments arguments, CancellationToken cancellationToken) + { + arguments.TryGetValue("query", out var query); + if (string.IsNullOrEmpty(query?.ToString())) + { + return []; + } + + var parameters = function.Metadata.Parameters; + + arguments.TryGetValue("count", out var count); + arguments.TryGetValue("skip", out var skip); + arguments.TryGetValue("site", out var site); + BasicFilterOptions? basicFilter = null; + if (string.IsNullOrEmpty(site?.ToString())) + { + basicFilter = new BasicFilterOptions().Equality("site", site?.ToString()!); + } + SearchOptions searchOptions = new() + { + Count = (count as int?) ?? 2, + Offset = (skip as int?) ?? 0, + BasicFilter = basicFilter + }; + + var result = await textSearch.SearchAsync(query?.ToString()!, searchOptions, cancellationToken).ConfigureAwait(false); + return await result.Results.ToListAsync(cancellationToken).ConfigureAwait(false); + } + + var options = new KernelFunctionFromMethodOptions() + { + FunctionName = "Search", + Description = "Perform a search for content related to the specified query and optionally from the specified domain.", + Parameters = + [ + new KernelParameterMetadata("query") { Description = "What to search for", IsRequired = true }, + new KernelParameterMetadata("count") { Description = "Number of results", IsRequired = false, DefaultValue = 2 }, + new KernelParameterMetadata("skip") { Description = "Number of results to skip", IsRequired = false, DefaultValue = 0 }, + new KernelParameterMetadata("site") { Description = "Only return results from this domain", IsRequired = false, DefaultValue = 2 }, + ], + ReturnParameter = new() { ParameterType = typeof(KernelSearchResults) }, + }; + + return KernelFunctionFactory.CreateFromMethod(SearchAsync, options); +} +``` + +## Decision Drivers + +- An AI must be able to perform searches with a search plugin and get back results with the following types: + 1. Simple string value. + 2. Normalized value including a name, content and link. + 3. Data model supported by the underlying search implementation. +- Application developers should be able to easily add a search plugin using a search connector with minimal lines of code (ideally one). +- Application developers must be able to provide connector specific settings. +- Application developers must be able to set required information e.g. `IndexName` for search providers. +- Application developers must be able to support custom schemas for search connectors. No fields should be required. +- Community developers must be able to easily create a new search connector. +- Community developers must be able to easily create a new search connector return type that inherits from `KernelSearchResults` (alternate suggestion `SearchResultContent`). +- The design must be flexible to support future requirements and different search modalities. +- Application developers must to be able to override the semantic descriptions of the search function(s) per instance registered via settings / inputs. +- Search service developers must be able to define the attributes of the search method (e.g., name, description, input names, input descriptions, return description). + +Expect these to be handled by Vector search + +- Application developers must be able to optionally define the execution settings of an embedding service with a default being provided by the Kernel. +- Application developers must be ab able to import a vector DB search connection using an ML index file. + +### Future Requirements + +- An AI can perform search with filters using a search plugin. This will require a Connector Dev to implement a search interface that accepts a Filter object. +- Connector developers can decide which search filters are given to the AI by “default”. +- Application developers can override which filters the AI can use via search settings. +- Application developers can set the filters when they create the connection. + +### Search Abstractions + +The diagram below shows the layering in the proposed design. From the bottom up these are: + +- We aim to support an arbitrary search service, which could be a Web search, Vector DB search or a proprietary implementation. +- There will be a client API layer. Note we are **not** trying to provide a search abstraction to normalize this layer. +- We are defining an `IVectorSearch` abstraction which will allow us to perform searches against multiple Vector databases. This will be covered in a separate ADR. +- The focus for this ADR is the `ITextSearch` abstraction which is being designed to support the use cases described earlier in this document. +- We will provide a number of implementations of the `ITextSearch` abstraction e.g., Bing, Google, Vector DB's. The final list is TBD. + +Search Abstractions + +## Considered Options + +1. Define `ITextSearch` abstraction with single `Search` method and implementations check type +2. Define `ITextSearch` abstraction with single `Search` method and implementations implement what they support +3. Define `ITextSearch` abstraction with multiple search methods +4. Define `ITextSearch` abstraction with multiple search methods and additional methods on implementations +5. Define `ITextSearch` and `ITextSearch` abstractions + +## Decision Outcome + +Chosen option: "Define `ITextSearch` abstraction with multiple search methods and additional methods on implementations", because +it meets the requirements, allows for type safe methods, can support arbitrary object responses and simplifies the implementation burden for developers implementing the abstraction. + + + +## Pros and Cons of the Options + +### 1. Define `ITextSearch` abstraction with single `Search` method and implementations check type + +Abstraction would look like this: + +```csharp +public interface ITextSearch where T : class +{ + public Task> SearchAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default); +} +``` + +Implementation would look like this: + +```csharp +public class BingTextSearch : ITextSearch where T : class +{ + public async Task> SearchAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default) + { + // Retrieve Bing search results + + if (typeof(T) == typeof(string)) + { + // Convert to string (custom mapper is supported) + } + else if (typeof(T) == typeof(TextSearchResult)) + { + // Convert to TextSearchResult (custom mapper is supported) + } + else if (typeof(T) == typeof(BingWebPage)) + { + // Return Bing search results + } + } +} +``` + +**Note:** Custom mappers are specified when the `BingTextSearch` instance is created + +For Vector Store the implementation would look like: + +```csharp +public sealed class VectorTextSearch : ITextSearch where T : class +{ + public async Task> SearchAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default) + { + // Retrieve Vector Store search results + + if (typeof(T) == typeof(string)) + { + // Convert to string (custom mapper is supported) + } + else if (typeof(T) == typeof(TextSearchResult)) + { + // Convert to TextSearchResult (custom mapper is required) + } + else + { + // Return search results + } + } +} +``` + +- Good, because can support custom types for `VectorTextSearch` +- Neitral, because type checking required for each invocation +- Bad, because not clear what return types are supported by an implementation + +### 2. Define `ITextSearch` abstraction with single `Search` method and implementations implement what they support + +Abstraction would look like this: + +```csharp +public interface ITextSearch where T : class +{ + public Task> SearchAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default); +} +``` + +Implementation would look like this: + +```csharp +public sealed class BingTextSearch : ITextSearch, ITextSearch, ITextSearch +{ + /// + async Task> ITextSearch.SearchAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results and convert to TextSearchResult + } + + /// + async Task> ITextSearch.SearchAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results + } + + /// + async Task> ITextSearch.SearchAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results and convert to string + } +} +``` + +For Vector Store the implementation would still look like: + +```csharp +public sealed class VectorTextSearch : ITextSearch where T : class +{ + public async Task> SearchAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default) + { + // Retrieve Vector Store search results + + if (typeof(T) == typeof(string)) + { + // Convert to string (custom mapper is supported) + } + else if (typeof(T) == typeof(TextSearchResult)) + { + // Convert to TextSearchResult (custom mapper is required) + } + else + { + // Return search results + } + } +} +``` + +- Good, because separates the implementation for each return type where possible +- Good, because it can be made clear what types are supported by an implementation +- Bad, because you need to downcast + +### 3. Define `ITextSearch` abstraction with multiple search methods + +Abstraction would look like this: + +```csharp +public interface ITextSearch where T : class +{ + public Task> SearchAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default); + + public Task> GetTextSearchResultsAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default); + + public Task> GetSearchResultsAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default); +} +``` + +Implementation could look like this: + +```csharp +public sealed class BingTextSearch : ITextSearch +{ + public async Task> GetSearchResultsAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results + } + + public async Task> GetTextSearchResultsAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results and convert to TextSearchResult + } + + public async Task> SearchAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results and convert to string + } +} +``` + +**Note:** This option would not be extensible i.e., to add support for Bing News search results we would have to add a new `BingNewTextSearch` implementation. + +For Vector Store the implementation would look like: + +```csharp +public sealed class VectorTextSearch : ITextSearch where T : class +{ + public Task> GetSearchResultsAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Vector Store search results + } + + public Task> GetTextSearchResultsAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Vector Store search results and convert to TextSearchResult + } + + public Task> SearchAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Vector Store search results and convert to string + } +} +``` + +**Note:** This option would be extensible i.e., we can support custom record types in the underlying Vector Store implementation but developers will have to deal with run time exceptions if the type of record they specify is not supported. + +- Good, because there are separate methods for each type +- Bad, because in the above BingTextSearch sample no additional types can be added +- Bad, because not clear what types are supported + +### 4. Define `ITextSearch` abstraction with multiple search methods and additional methods on implementations + +Abstraction would look like this: + +```csharp +public interface ITextSearch +{ + public Task> SearchAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default); + + public Task> GetTextSearchResultsAsync(string query, SearchOptions? searchOptions = null, CancellationToken cancellationToken = default); +} +``` + +Implementation could look like this: + +```csharp +public sealed class BingTextSearch : ITextSearch +{ + public async Task> GetTextSearchResultsAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results and convert to TextSearchResult + } + + public async Task> SearchAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results and convert to string + } + + public async Task> GetWebPagesAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Bing search results + } +} +``` + +**Note:** This option would be extensible i.e., to add support for Bing News search results we would just have to add a new method to `BingTextSearch`. + +For Vector Store the implementation would look like: + +```csharp +public sealed class VectorTextSearch : ITextSearch where T : class +{ + public Task> GetSearchResultsAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Vector Store search results + } + + public Task> GetTextSearchResultsAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Vector Store search results and convert to TextSearchResult + } + + public Task> SearchAsync(string query, SearchOptions? searchOptions, CancellationToken cancellationToken) + { + // Retrieve Vector Store search results and convert to string + } +} +``` + +**Note:** This option would be extensible i.e., we can support custom record types in the underlying Vector Store implementation but developers will have to deal with run time exceptions if the type of record they specify is not supported. + +- Good, because there are separate methods for each type +- Good, because support for additional types can be added +- Good, because this will be easier to implement in Python +- Bad, abstraction is limited to just including support for `string` and `TextSearchResult` + +### 5. Define `ITextSearch` and `ITextSearch` abstractions + +Start with the `ITextSearch` abstraction and extend to include `ITextSearch` as needed. + +- Good, separate methods for each type +- Good, support for additional types can be added +- Good, additional abstraction using generics can be added when and if needed + +## More Information + +{You might want to provide additional evidence/confidence for the decision outcome here and/or +document the team agreement on the decision and/or +define when this decision when and how the decision should be realized and if/when it should be re-visited and/or +how the decision is validated. +Links to other decisions and resources might appear here as well.} + +### Current Design + +The current design for search is divided into two implementations: + +1. Search using a Memory Store i.e. Vector Database +1. Search using a Web Search Engine + +In each case a plugin implementation is provided which allows the search to be integrated into prompts e.g. to provide additional context or to be called from a planner or using auto function calling with a LLM. + +#### Memory Store Search + +The diagram below shows the layers in the current design of the Memory Store search functionality. + +Current Memory Design + +#### Web Search Engine Integration + +The diagram below shows the layers in the current design of the Web Search Engine integration. + +Current Web Search Design + +The Semantic Kernel currently includes experimental support for a `WebSearchEnginePlugin` which can be configured via a `IWebSearchEngineConnector` to integrate with a Web Search Services such as Bing or Google. The search results can be returned as a collection of string values or a collection of `WebPage` instances. + +- The `string` values returned from the plugin represent a snippet of the search result in plain text. +- The `WebPage` instances returned from the plugin are a normalized subset of a complete search result. Each `WebPage` includes: + - `name` The name of the search result web page + - `url` The url of the search result web page + - `snippet` A snippet of the search result in plain text + +The current design doesn't support breaking glass scenario's or using custom types for the response values. + +One goal of this ADR is to have a design where text search is unified into a single abstraction and a single plugin can be configured to perform web based searches or to search a vector store. \ No newline at end of file diff --git a/docs/decisions/diagrams/search-abstractions.png b/docs/decisions/diagrams/search-abstractions.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c4e3d195552c06a90c9b7bf34155f4d0cfed4f GIT binary patch literal 103667 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 z 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 + SearchAsync~T~(query, searchSettings, cancellationToken) Task~KernelSearchResults~T~~ + } + + class SearchOptions { + +string Index + +int Count + +int Offset + +BasicFilterOptions BasicFilter + } + + class BasicFilterOptions { + +IEnumerable~FilterClause~ FilterClauses + Equality(field, value) BasicFilterOptions + } + + class FilterClause { + +FilterClauseType Type + } + + class FilterClauseType { + Equality + } + + class TextSearchResult { + +string? Name + +string? Value + +string? Link + } + } + + ITextSearch ..> SearchOptions + ITextSearch ..> KernelSearchResults + SearchOptions ..> BasicFilterOptions + BasicFilterOptions ..> FilterClause + BingTextSearch --|> ITextSearch + GoogleTextSearch --|> ITextSearch + AzureAISearch --|> ITextSearch + + BingTextSearch ..> TextSearchResult + GoogleTextSearch ..> TextSearchResult + AzureAISearch ..> TextSearchResult + diff --git a/docs/decisions/diagrams/text-search-abstraction.png b/docs/decisions/diagrams/text-search-abstraction.png new file mode 100644 index 0000000000000000000000000000000000000000..7a2de31613c6cf1d0c6e7fae5bb72722e9ffd650 GIT binary patch literal 88651 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�V?r>$za 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 wZtF49a}XWFg@@3p5~&;d5nvj$PFs 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 literal 0 HcmV?d00001 diff --git a/docs/decisions/diagrams/text-search-imemorystore.mmd b/docs/decisions/diagrams/text-search-imemorystore.mmd new file mode 100644 index 000000000000..63f294b5daa6 --- /dev/null +++ b/docs/decisions/diagrams/text-search-imemorystore.mmd @@ -0,0 +1,35 @@ +block-beta +columns 1 + block:Plugin + PluginAbstraction[["TextMemoryPlugin"]] + PluginDescription["Provides a plugin to save or recall information from the long or short term memory."] + end + space + block:SemanticMemory + SemanticMemoryAbstraction[["ISemanticTextMemory"]] + SemanticMemoryDescription["An interface for semantic memory that creates and recalls memories associated with text."] + end + space + block:Memory + MemoryAbstraction[["IMemoryStore"]] + MemoryDescription["An interface for storing and retrieving indexed MemoryRecord objects in a data store."] + end + space + block:MemoryClient + MemoryClientAbstraction[["Memory Client"]] + MemoryClientDescription["A database specific service client."] + end + space + block:VectorDatabaseService + VectorDatabase[["Vector Database"]] + VectorDatabaseDescription["A vector database e.g. Redis, Milvus, Pinecone, Qdrant."] + end + Plugin-- "Uses the provided Semantic Memory implementation to recall text memories." -->SemanticMemory + SemanticMemory-- "Uses the provided Memory Store to query the database." -->Memory + Memory-- "Uses a Memory Client (if available) to interact with the database." -->MemoryClient + MemoryClient-- "Invokes the Vector Database Service." -->VectorDatabaseService + style PluginDescription fill:#FFF,stroke-width:0px + style SemanticMemoryDescription fill:#FFF,stroke-width:0px + style MemoryDescription fill:#FFF,stroke-width:0px + style MemoryClientDescription fill:#FFF,stroke-width:0px + style VectorDatabaseDescription fill:#FFF,stroke-width:0px \ No newline at end of file diff --git a/docs/decisions/diagrams/text-search-imemorystore.png b/docs/decisions/diagrams/text-search-imemorystore.png new file mode 100644 index 0000000000000000000000000000000000000000..2004ed6905065cc0e027360bf53d7d17f66e2172 GIT binary patch literal 109131 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 &+Id@ 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

IPjfjBfvM4A%&+XwEEc`6$*-C$64#{)>? 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ΠobT3i5u#~}tMV_YQXn8&I*8s@#Kd;e|;$IifKVQcixD;%G760b| zBtHHxx!eAmM{Q#tED4G`fR!7BFBzRC91|Dd-zN;7nutR?iXKGtrK3SadPYmG^@H%W z(n|>(<9|D4{`tXcW7+5@eV2*?VP^>(jxxrFF8`RV{&{6Zo!~bUTE;8hsPBCRi}Rm9 zF7-K8^z8o)%DnimqwJsmUP%6*g(Los*8lf6-%u}{k#>Lf=-a-o2O|L=cW>+6DuY`E F{}Returns either search result summaries or a normalised WebPage instance."] + end + space + block:Service + ServiceType[["Web Search Service"]] + ServiceDescription["A web search service e.g. Bing, Google, ..."] + end + + Plugin-- "Uses the provided IWebSearchEngineConnector implementation to invoke a web search engine." -->Connector + Connector-- "Invokes the web search engine using REST or a service client." -->Service + + style PluginDescription fill:#FFF,stroke-width:0px + style ConnectorDescription fill:#FFF,stroke-width:0px + style ServiceDescription fill:#FFF,stroke-width:0px diff --git a/docs/decisions/diagrams/text-search-iwebsearchengineconnector.png b/docs/decisions/diagrams/text-search-iwebsearchengineconnector.png new file mode 100644 index 0000000000000000000000000000000000000000..4cda46613f98f34736950e4731cb2517f0416a33 GIT binary patch literal 104277 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 +/// Used to provide basic filtering when using . +/// +/// +/// A basic filter has a collection of s that can be used by +/// an implementation to request that the underlying search +/// service filter the search results. +/// +[Experimental("SKEXP0001")] +public sealed class BasicFilterOptions +{ + ///

+ /// The clauses to apply to the + /// + public IEnumerable FilterClauses => this._filterClauses; + + /// + /// Add a equality clause to the filter options. + /// + /// Name of the field. + /// Value of the field. + /// FilterOptions instance to allow fluent configuration. + public BasicFilterOptions Equality(string field, object value) + { + this._filterClauses.Add(new EqualityFilterClause(field, value)); + return this; + } + + #region private + private readonly List _filterClauses = []; + #endregion +} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs new file mode 100644 index 000000000000..996dc5b1ca3a --- /dev/null +++ b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft. All rights reserved. + +namespace Microsoft.SemanticKernel.Search; + +/// +/// A which filters using equality of a field value with the specified field value. +/// +/// +/// The is used to request that the underlying search service should +/// filter search results based on the equality of a field value with the specified field value. +/// +/// Field name. +/// Field value. +public sealed class EqualityFilterClause(string field, object value) : FilterClause(FilterClauseType.Equality) +{ + /// + /// Field name to match. + /// + public string Field { get; private set; } = field; + + /// + /// Field value to match. + /// + public object Value { get; private set; } = value; +} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs new file mode 100644 index 000000000000..66542dd9540d --- /dev/null +++ b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft. All rights reserved. + +namespace Microsoft.SemanticKernel.Search; + +/// +/// Base class for filter clauses. +/// +public class FilterClause +{ + /// + /// The type of FilterClause. + /// + /// + /// The is used to request that the underlying search service should + /// filter search results based on the specified criteria. + /// + public FilterClauseType Type { get; private set; } + + /// + /// Construct an instance of + /// + /// The type of filter clause. + protected FilterClause(FilterClauseType type) + { + this.Type = type; + } +} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs new file mode 100644 index 000000000000..88b69166d2e5 --- /dev/null +++ b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft. All rights reserved. + +namespace Microsoft.SemanticKernel.Search; + +/// +/// Enum representing the types of filter clause. +/// +public enum FilterClauseType +{ + /// + /// The filter clause is an equality clause. + /// + Equality, +} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs new file mode 100644 index 000000000000..c3bc4302ef92 --- /dev/null +++ b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft. All rights reserved. + +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.SemanticKernel.Search; + +/// +/// Interface for text based search queries for use with Semantic Kernel prompts and automatic function calling. +/// +[Experimental("SKEXP0001")] +public interface ITextSearch +{ + /// + /// Perform a search for content related to the specified query and return values representing the search results. + /// + /// What to search for. + /// Options used when executing a text search. + /// The to monitor for cancellation requests. The default is . + [Description("Perform a search for content related to the specified query and return string values representing the search results.")] + public Task> SearchAsync( + string query, + TextSearchOptions? searchOptions = null, + CancellationToken cancellationToken = default); + + /// + /// Perform a search for content related to the specified query and return values representing the search results. + /// + /// What to search for. + /// Options used when executing a text search. + /// The to monitor for cancellation requests. The default is . + [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] + public Task> GetTextSearchResultsAsync( + string query, + TextSearchOptions? searchOptions = null, + CancellationToken cancellationToken = default); + + /// + /// Perform a search for content related to the specified query and return values representing the search results. + /// + /// What to search for. + /// Options used when executing a text search. + /// The to monitor for cancellation requests. The default is . + [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] + public Task> GetSearchResultsAsync( + string query, + TextSearchOptions? searchOptions = null, + CancellationToken cancellationToken = default); +} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs b/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs new file mode 100644 index 000000000000..2aac37123d94 --- /dev/null +++ b/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft. All rights reserved. +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace Microsoft.SemanticKernel.Search; + +/// +/// Represents the search results returned from a service. +/// +[Experimental("SKEXP0001")] +public class KernelSearchResults +{ + /// + /// The total count of results found by the search operation, or null + /// if the count was not requested. + /// + public long? TotalCount { get; internal set; } + + /// + /// The inner content representation. Use this to bypass the current abstraction. + /// + /// + /// The usage of this property is considered "unsafe". Use it only if strictly necessary. + /// + [JsonIgnore] + public object? InnerContent { get; } + + /// + /// The metadata associated with the content. + /// + public IReadOnlyDictionary? Metadata { get; } + + /// + /// The search results. + /// + public IAsyncEnumerable Results { get; } + + /// + /// Initializes a new instance of the class. + /// + /// The inner content representation. + /// The search results. + /// The total count of results found by the search operation, or null if the count was not requested. + /// Metadata associated with the search results. + public KernelSearchResults(object? innerContent, IAsyncEnumerable results, long? totalCount = null, IReadOnlyDictionary? metadata = null) + { + this.InnerContent = innerContent; + this.Results = results; + this.TotalCount = totalCount; + this.Metadata = metadata; + } +} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs new file mode 100644 index 000000000000..8a48969acc4c --- /dev/null +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft. All rights reserved. +using System.Diagnostics.CodeAnalysis; + +namespace Microsoft.SemanticKernel.Search; + +/// +/// Options which can be applied when using . +/// +[Experimental("SKEXP0001")] +public sealed class TextSearchOptions +{ + /// + /// The name of the search index. + /// + public string? Index { get; set; } + + /// + /// The basic filter expression to apply to the search query. + /// + public BasicFilterOptions? BasicFilter { get; set; } + + /// + /// Number of search results to return. + /// + public int Count { get; set; } = 2; + + /// + /// The index of the first result to return. + /// + public int Offset { get; set; } = 0; +} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs new file mode 100644 index 000000000000..8ee5a2641b01 --- /dev/null +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft. All rights reserved. + +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; + +namespace Microsoft.SemanticKernel.Search; + +/// +/// Represents a search result retrieved from a instance. +/// +/// +/// An instance of is a normalised search result which provides access to: +/// - Name associated with the search result +/// - Value associated with the search result +/// - Link reference associated with the search result +/// +[Experimental("SKEXP0001")] +public class TextSearchResult(string? name = null, string? value = null, string? link = null, object? innerResult = null) +{ + /// + /// The text search result name. + /// + public string? Name { get; init; } = name; + + /// + /// The link reference associated with the text search result. + /// + public string? Link { get; init; } = link; + + /// + /// The text search result value. + /// + public string? Value { get; init; } = value; + + /// + /// The inner result representation. Use this to bypass the current abstraction. + /// + /// + /// The usage of this property is considered "unsafe". Use it only if strictly necessary. + /// + [JsonIgnore] + public object? InnerResult { get; init; } = innerResult; +} From 6dac9213a72ea731ff8d48474dbcc09467afe867 Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:23:40 +0100 Subject: [PATCH 2/8] Update ADR header --- docs/decisions/00NN-text-search.md | 2 +- .../SemanticKernel.Abstractions/Search/EqualityFilterClause.cs | 3 +++ dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs | 3 +++ .../src/SemanticKernel.Abstractions/Search/FilterClauseType.cs | 3 +++ .../SemanticKernel.Abstractions/Search/KernelSearchResults.cs | 2 +- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/decisions/00NN-text-search.md b/docs/decisions/00NN-text-search.md index a76581053f1c..51284bed9a96 100644 --- a/docs/decisions/00NN-text-search.md +++ b/docs/decisions/00NN-text-search.md @@ -2,7 +2,7 @@ # These are optional elements. Feel free to remove any of them. status: proposed contact: markwallace -date: {YYYY-MM-DD when the decision was last updated} +date: 2024-08-21 deciders: sergeymenshykh, markwallace, rbarreto, dmytrostruk, westey consulted: stephentoub, matthewbolanos, shrojans informed: diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs index 996dc5b1ca3a..d1fb1cf9382e 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs @@ -1,5 +1,7 @@ // Copyright (c) Microsoft. All rights reserved. +using System.Diagnostics.CodeAnalysis; + namespace Microsoft.SemanticKernel.Search; /// @@ -11,6 +13,7 @@ namespace Microsoft.SemanticKernel.Search; /// /// Field name. /// Field value. +[Experimental("SKEXP0001")] public sealed class EqualityFilterClause(string field, object value) : FilterClause(FilterClauseType.Equality) { /// diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs index 66542dd9540d..a2471dbfc8d4 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs @@ -1,10 +1,13 @@ // Copyright (c) Microsoft. All rights reserved. +using System.Diagnostics.CodeAnalysis; + namespace Microsoft.SemanticKernel.Search; /// /// Base class for filter clauses. /// +[Experimental("SKEXP0001")] public class FilterClause { /// diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs index 88b69166d2e5..0b11c4e51f41 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs @@ -1,10 +1,13 @@ // Copyright (c) Microsoft. All rights reserved. +using System.Diagnostics.CodeAnalysis; + namespace Microsoft.SemanticKernel.Search; /// /// Enum representing the types of filter clause. /// +[Experimental("SKEXP0001")] public enum FilterClauseType { /// diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs b/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs index 2aac37123d94..df8a9300c6e2 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs @@ -6,7 +6,7 @@ namespace Microsoft.SemanticKernel.Search; /// -/// Represents the search results returned from a service. +/// Represents the search results returned from a service. /// [Experimental("SKEXP0001")] public class KernelSearchResults From 115e9da0f8c44bf89a37297f1a90aae296bb1291 Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:31:06 +0100 Subject: [PATCH 3/8] Address code review feedback --- .../Search/BasicFilterOptions.cs | 6 +-- .../Search/EqualityFilterClause.cs | 6 +-- .../Search/FilterClause.cs | 10 ++--- .../Search/ITextSearch.cs | 2 +- .../Search/KernelSearchResults.cs | 40 ++++++------------- .../Search/TextSearchOptions.cs | 8 +++- .../Search/TextSearchResult.cs | 26 +++++++----- 7 files changed, 46 insertions(+), 52 deletions(-) diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/BasicFilterOptions.cs b/dotnet/src/SemanticKernel.Abstractions/Search/BasicFilterOptions.cs index 0e6f3b81919c..29d7267d26ea 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/BasicFilterOptions.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/BasicFilterOptions.cs @@ -24,12 +24,12 @@ public sealed class BasicFilterOptions /// /// Add a equality clause to the filter options. /// - /// Name of the field. + /// Name of the field. /// Value of the field. /// FilterOptions instance to allow fluent configuration. - public BasicFilterOptions Equality(string field, object value) + public BasicFilterOptions Equality(string fieldName, object value) { - this._filterClauses.Add(new EqualityFilterClause(field, value)); + this._filterClauses.Add(new EqualityFilterClause(fieldName, value)); return this; } diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs index d1fb1cf9382e..eabce8d80ce5 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs @@ -11,15 +11,15 @@ namespace Microsoft.SemanticKernel.Search; /// The is used to request that the underlying search service should /// filter search results based on the equality of a field value with the specified field value. /// -/// Field name. +/// Field name. /// Field value. [Experimental("SKEXP0001")] -public sealed class EqualityFilterClause(string field, object value) : FilterClause(FilterClauseType.Equality) +public sealed class EqualityFilterClause(string fieldName, object value) : FilterClause(FilterClauseType.Equality) { /// /// Field name to match. /// - public string Field { get; private set; } = field; + public string FieldName { get; private set; } = fieldName; /// /// Field value to match. diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs index a2471dbfc8d4..1d6b0c63d91b 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs @@ -7,23 +7,23 @@ namespace Microsoft.SemanticKernel.Search; /// /// Base class for filter clauses. /// +/// +/// The is used to request that the underlying search service should +/// filter search results based on the specified criteria. +/// [Experimental("SKEXP0001")] public class FilterClause { /// /// The type of FilterClause. /// - /// - /// The is used to request that the underlying search service should - /// filter search results based on the specified criteria. - /// public FilterClauseType Type { get; private set; } /// /// Construct an instance of /// /// The type of filter clause. - protected FilterClause(FilterClauseType type) + protected internal FilterClause(FilterClauseType type) { this.Type = type; } diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs index c3bc4302ef92..58be4c122556 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs @@ -31,7 +31,7 @@ public Task> SearchAsync( /// What to search for. /// Options used when executing a text search. /// The to monitor for cancellation requests. The default is . - [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] + [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] public Task> GetTextSearchResultsAsync( string query, TextSearchOptions? searchOptions = null, diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs b/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs index df8a9300c6e2..55b42727814e 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/KernelSearchResults.cs @@ -1,53 +1,37 @@ // Copyright (c) Microsoft. All rights reserved. using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Text.Json.Serialization; namespace Microsoft.SemanticKernel.Search; /// /// Represents the search results returned from a service. /// +/// +/// Initializes a new instance of the class. +/// +/// The search results. +/// The total count of results found by the search operation, or null if the count was not requested. +/// Metadata associated with the search results. [Experimental("SKEXP0001")] -public class KernelSearchResults +public sealed class KernelSearchResults(IAsyncEnumerable results, long? totalCount = null, IReadOnlyDictionary? metadata = null) { /// /// The total count of results found by the search operation, or null - /// if the count was not requested. - /// - public long? TotalCount { get; internal set; } - - /// - /// The inner content representation. Use this to bypass the current abstraction. + /// if the count was not requested or cannot be computed. /// /// - /// The usage of this property is considered "unsafe". Use it only if strictly necessary. + /// This value represents the total number of results that are available for the current query and not the number of results being returned. /// - [JsonIgnore] - public object? InnerContent { get; } + public long? TotalCount { get; internal set; } = totalCount; /// /// The metadata associated with the content. /// - public IReadOnlyDictionary? Metadata { get; } + public IReadOnlyDictionary? Metadata { get; } = metadata; /// /// The search results. /// - public IAsyncEnumerable Results { get; } - - /// - /// Initializes a new instance of the class. - /// - /// The inner content representation. - /// The search results. - /// The total count of results found by the search operation, or null if the count was not requested. - /// Metadata associated with the search results. - public KernelSearchResults(object? innerContent, IAsyncEnumerable results, long? totalCount = null, IReadOnlyDictionary? metadata = null) - { - this.InnerContent = innerContent; - this.Results = results; - this.TotalCount = totalCount; - this.Metadata = metadata; - } + public IAsyncEnumerable Results { get; } = results; } diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs index 8a48969acc4c..1e127f202197 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs @@ -10,9 +10,13 @@ namespace Microsoft.SemanticKernel.Search; public sealed class TextSearchOptions { /// - /// The name of the search index. + /// Flag indicating the total count should be included in the results. /// - public string? Index { get; set; } + /// + /// Default value is false. + /// Not all text search implementations will support this option. + /// + public bool IncludeTotalCount { get; set; } = false; /// /// The basic filter expression to apply to the search query. diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs index 8ee5a2641b01..31313fe9de8a 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft. All rights reserved. using System.Diagnostics.CodeAnalysis; -using System.Text.Json.Serialization; namespace Microsoft.SemanticKernel.Search; @@ -14,30 +13,37 @@ namespace Microsoft.SemanticKernel.Search; /// - Value associated with the search result /// - Link reference associated with the search result /// +/// The text search result name. +/// The text search result value. +/// The link reference associated with the text search result. +/// The inner result representation. Use this to bypass the current abstraction. [Experimental("SKEXP0001")] -public class TextSearchResult(string? name = null, string? value = null, string? link = null, object? innerResult = null) +public sealed class TextSearchResult(string? name = null, string? value = null, string? link = null, object? innerResult = null) { /// /// The text search result name. /// + /// + /// This represents the name associated with the result. + /// If the text search was for a web search engine this would typically be the name of the web page associated with the search result. + /// public string? Name { get; init; } = name; /// /// The link reference associated with the text search result. /// + /// + /// This represents a possible link associated with the result. + /// If the text search was for a web search engine this would typically be the URL of the web page associated with the search result. + /// public string? Link { get; init; } = link; /// /// The text search result value. /// - public string? Value { get; init; } = value; - - /// - /// The inner result representation. Use this to bypass the current abstraction. - /// /// - /// The usage of this property is considered "unsafe". Use it only if strictly necessary. + /// This represents the text value associated with the result. + /// If the text search was for a web search engine this would typically be the snippet describing the web page associated with the search result. /// - [JsonIgnore] - public object? InnerResult { get; init; } = innerResult; + public string? Value { get; init; } = value; } From e6804bf79ea053cc95e2cb2044f4d77cfbed7a2b Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:31:33 +0100 Subject: [PATCH 4/8] Address code review feedback --- .../src/SemanticKernel.Abstractions/Search/TextSearchResult.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs index 31313fe9de8a..9f0c0906f9eb 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs @@ -16,9 +16,8 @@ namespace Microsoft.SemanticKernel.Search; /// The text search result name. /// The text search result value. /// The link reference associated with the text search result. -/// The inner result representation. Use this to bypass the current abstraction. [Experimental("SKEXP0001")] -public sealed class TextSearchResult(string? name = null, string? value = null, string? link = null, object? innerResult = null) +public sealed class TextSearchResult(string? name = null, string? value = null, string? link = null) { /// /// The text search result name. From fa4fc9a3d16eef1f99ad27d8daaa3a9bcda937d3 Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Thu, 22 Aug 2024 03:41:13 +0100 Subject: [PATCH 5/8] Rename to TextSearchContent --- dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs | 2 +- .../Search/{TextSearchResult.cs => TextSearchContent.cs} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename dotnet/src/SemanticKernel.Abstractions/Search/{TextSearchResult.cs => TextSearchContent.cs} (89%) diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs index 58be4c122556..7542b2e6a196 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs @@ -32,7 +32,7 @@ public Task> SearchAsync( /// Options used when executing a text search. /// The to monitor for cancellation requests. The default is . [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] - public Task> GetTextSearchResultsAsync( + public Task> GetTextSearchResultsAsync( string query, TextSearchOptions? searchOptions = null, CancellationToken cancellationToken = default); diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchContent.cs similarity index 89% rename from dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs rename to dotnet/src/SemanticKernel.Abstractions/Search/TextSearchContent.cs index 9f0c0906f9eb..2a883ca5df96 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchContent.cs @@ -8,7 +8,7 @@ namespace Microsoft.SemanticKernel.Search; /// Represents a search result retrieved from a instance. /// /// -/// An instance of is a normalised search result which provides access to: +/// An instance of is a normalised search result which provides access to: /// - Name associated with the search result /// - Value associated with the search result /// - Link reference associated with the search result @@ -17,7 +17,7 @@ namespace Microsoft.SemanticKernel.Search; /// The text search result value. /// The link reference associated with the text search result. [Experimental("SKEXP0001")] -public sealed class TextSearchResult(string? name = null, string? value = null, string? link = null) +public sealed class TextSearchContent(string? name = null, string? value = null, string? link = null) { /// /// The text search result name. From 0ecc2c932a053f2d1dc4192d2d13c756aad42874 Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Thu, 22 Aug 2024 03:45:55 +0100 Subject: [PATCH 6/8] Rename to TextSearchContent --- dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs index 7542b2e6a196..4b6de688fe6e 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs @@ -26,7 +26,7 @@ public Task> SearchAsync( CancellationToken cancellationToken = default); /// - /// Perform a search for content related to the specified query and return values representing the search results. + /// Perform a search for content related to the specified query and return values representing the search results. /// /// What to search for. /// Options used when executing a text search. From b8663a28bef4a8009b6864b366e73ef89c071830 Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Thu, 22 Aug 2024 10:54:24 +0100 Subject: [PATCH 7/8] Undo rename --- dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs | 4 ++-- .../Search/{TextSearchContent.cs => TextSearchResult.cs} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename dotnet/src/SemanticKernel.Abstractions/Search/{TextSearchContent.cs => TextSearchResult.cs} (89%) diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs index 4b6de688fe6e..58be4c122556 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs @@ -26,13 +26,13 @@ public Task> SearchAsync( CancellationToken cancellationToken = default); /// - /// Perform a search for content related to the specified query and return values representing the search results. + /// Perform a search for content related to the specified query and return values representing the search results. /// /// What to search for. /// Options used when executing a text search. /// The to monitor for cancellation requests. The default is . [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] - public Task> GetTextSearchResultsAsync( + public Task> GetTextSearchResultsAsync( string query, TextSearchOptions? searchOptions = null, CancellationToken cancellationToken = default); diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchContent.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs similarity index 89% rename from dotnet/src/SemanticKernel.Abstractions/Search/TextSearchContent.cs rename to dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs index 2a883ca5df96..9f0c0906f9eb 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchContent.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchResult.cs @@ -8,7 +8,7 @@ namespace Microsoft.SemanticKernel.Search; /// Represents a search result retrieved from a instance. /// /// -/// An instance of is a normalised search result which provides access to: +/// An instance of is a normalised search result which provides access to: /// - Name associated with the search result /// - Value associated with the search result /// - Link reference associated with the search result @@ -17,7 +17,7 @@ namespace Microsoft.SemanticKernel.Search; /// The text search result value. /// The link reference associated with the text search result. [Experimental("SKEXP0001")] -public sealed class TextSearchContent(string? name = null, string? value = null, string? link = null) +public sealed class TextSearchResult(string? name = null, string? value = null, string? link = null) { /// /// The text search result name. From a92bdb6c1aae9bfe621245e02353763165f7fd63 Mon Sep 17 00:00:00 2001 From: markwallace-microsoft <127216156+markwallace-microsoft@users.noreply.github.com> Date: Thu, 22 Aug 2024 20:42:55 +0100 Subject: [PATCH 8/8] Address code review feedback --- docs/decisions/00NN-text-search.md | 6 ------ .../Search/EqualityFilterClause.cs | 2 +- .../Search/FilterClause.cs | 17 +---------------- .../Search/FilterClauseType.cs | 17 ----------------- .../Search/ITextSearch.cs | 4 ---- .../Search/TextSearchOptions.cs | 7 ++++++- 6 files changed, 8 insertions(+), 45 deletions(-) delete mode 100644 dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs diff --git a/docs/decisions/00NN-text-search.md b/docs/decisions/00NN-text-search.md index 51284bed9a96..8d8dbef027b9 100644 --- a/docs/decisions/00NN-text-search.md +++ b/docs/decisions/00NN-text-search.md @@ -946,12 +946,6 @@ Start with the `ITextSearch` abstraction and extend to include `ITextSearch` ## More Information -{You might want to provide additional evidence/confidence for the decision outcome here and/or -document the team agreement on the decision and/or -define when this decision when and how the decision should be realized and if/when it should be re-visited and/or -how the decision is validated. -Links to other decisions and resources might appear here as well.} - ### Current Design The current design for search is divided into two implementations: diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs index eabce8d80ce5..feeb3f0221f6 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/EqualityFilterClause.cs @@ -14,7 +14,7 @@ namespace Microsoft.SemanticKernel.Search; /// Field name. /// Field value. [Experimental("SKEXP0001")] -public sealed class EqualityFilterClause(string fieldName, object value) : FilterClause(FilterClauseType.Equality) +public sealed class EqualityFilterClause(string fieldName, object value) : FilterClause { /// /// Field name to match. diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs index 1d6b0c63d91b..7c824a6f3481 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClause.cs @@ -12,19 +12,4 @@ namespace Microsoft.SemanticKernel.Search; /// filter search results based on the specified criteria. /// [Experimental("SKEXP0001")] -public class FilterClause -{ - /// - /// The type of FilterClause. - /// - public FilterClauseType Type { get; private set; } - - /// - /// Construct an instance of - /// - /// The type of filter clause. - protected internal FilterClause(FilterClauseType type) - { - this.Type = type; - } -} +public abstract class FilterClause; diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs b/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs deleted file mode 100644 index 0b11c4e51f41..000000000000 --- a/dotnet/src/SemanticKernel.Abstractions/Search/FilterClauseType.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. - -using System.Diagnostics.CodeAnalysis; - -namespace Microsoft.SemanticKernel.Search; - -/// -/// Enum representing the types of filter clause. -/// -[Experimental("SKEXP0001")] -public enum FilterClauseType -{ - /// - /// The filter clause is an equality clause. - /// - Equality, -} diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs index 58be4c122556..99b50d3b007d 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/ITextSearch.cs @@ -1,6 +1,5 @@ // Copyright (c) Microsoft. All rights reserved. -using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -19,7 +18,6 @@ public interface ITextSearch /// What to search for. /// Options used when executing a text search. /// The to monitor for cancellation requests. The default is . - [Description("Perform a search for content related to the specified query and return string values representing the search results.")] public Task> SearchAsync( string query, TextSearchOptions? searchOptions = null, @@ -31,7 +29,6 @@ public Task> SearchAsync( /// What to search for. /// Options used when executing a text search. /// The to monitor for cancellation requests. The default is . - [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] public Task> GetTextSearchResultsAsync( string query, TextSearchOptions? searchOptions = null, @@ -43,7 +40,6 @@ public Task> GetTextSearchResultsAsync( /// What to search for. /// Options used when executing a text search. /// The to monitor for cancellation requests. The default is . - [Description("Perform a search for content related to the specified query and return the name, value and link for each of the search results.")] public Task> GetSearchResultsAsync( string query, TextSearchOptions? searchOptions = null, diff --git a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs index 1e127f202197..e0a1621c824e 100644 --- a/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs +++ b/dotnet/src/SemanticKernel.Abstractions/Search/TextSearchOptions.cs @@ -9,6 +9,11 @@ namespace Microsoft.SemanticKernel.Search; [Experimental("SKEXP0001")] public sealed class TextSearchOptions { + /// + /// Default number of search results to return. + /// + public static readonly int DefaultCount = 5; + /// /// Flag indicating the total count should be included in the results. /// @@ -26,7 +31,7 @@ public sealed class TextSearchOptions /// /// Number of search results to return. /// - public int Count { get; set; } = 2; + public int Count { get; set; } = DefaultCount; /// /// The index of the first result to return.