diff --git a/README.md b/README.md index 161277c..61127e2 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ It is intended that the plugins and skills provided in this repository, are adap ## Components -- `./text_2_sql` contains an two Multi-Shot implementation for Text2SQL generation and querying which can be used to answer questions backed by a database as a knowledge base. A prompt based and vector based approach are shown, both of which exhibit great performance in answering sql queries. With these plugins, your RAG application can now access and pull data from any SQL table exposed to it to answer questions. -- `./adi_function_app` contains code for linking Azure Document Intelligence with AI Search to process complex documents with charts and images, and uses multi-modal models (gpt4o) to interpret and understand these. With this custom skill, the RAG application can draw insights from complex charts and images during the vector search. +- `./text_2_sql` contains an three Multi-Shot implementations for Text2SQL generation and querying which can be used to answer questions backed by a database as a knowledge base. A **prompt based** and **vector based** approach are shown, both of which exhibit great performance in answering sql queries. Additionally, a further iteration on the vector based approach is shown which uses a **query cache** to further speed up generation. With these plugins, your RAG application can now access and pull data from any SQL table exposed to it to answer questions. +- `./adi_function_app` contains code for linking **Azure Document Intelligence** with AI Search to process complex documents with charts and images, and uses **multi-modal models (gpt4o)** to interpret and understand these. With this custom skill, the RAG application can **draw insights from complex charts** and images during the vector search. - `./deploy_ai_search` provides an easy Python based utility for deploying an index, indexer and corresponding skillset for AI Search and for Text2SQL. The above components have been successfully used on production RAG projects to increase the quality of responses. diff --git a/adi_function_app/README.md b/adi_function_app/README.md index 679d534..1794059 100644 --- a/adi_function_app/README.md +++ b/adi_function_app/README.md @@ -206,6 +206,12 @@ If `chunk_by_page` header is `False`: **Page wise analysis in ADI is recommended to avoid splitting tables / figures across multiple chunks, when the chunking is performed.** +## Other Provided Custom Skills + +Due to a AI Search product limitation that AI Search cannot connect to AI Services behind Private Endpoints, we provide a Custom Key Phrase Extraction Skill that will work within a Private Endpoint environment. + +Additionally, a custom cleaning skill is provided to clean the chunks before vectorisation takes place. + ## Production Considerations Below are some of the considerations that should be made before using this custom skill in production: diff --git a/deploy_ai_search/README.md b/deploy_ai_search/README.md index 0e30f1e..0962cea 100644 --- a/deploy_ai_search/README.md +++ b/deploy_ai_search/README.md @@ -8,18 +8,30 @@ The associated scripts in this portion of the repository contains pre-built scri 2. Adjust `rag_documents.py` with any changes to the index / indexer. The `get_skills()` method implements the skills pipeline. Make any adjustments here in the skills needed to enrich the data source. 3. Run `deploy.py` with the following args: - - `indexer_type rag`. This selects the `RagDocumentsAISearch` sub class. + - `index_type rag`. This selects the `RagDocumentsAISearch` sub class. - `enable_page_chunking True`. This determines whether page wise chunking is applied in ADI, or whether the inbuilt skill is used for TextSplit. **Page wise analysis in ADI is recommended to avoid splitting tables / figures across multiple chunks, when the chunking is performed.** - `rebuild`. Whether to delete and rebuild the index. - `suffix`. Optional parameter that will apply a suffix onto the deployed index and indexer. This is useful if you want deploy a test version, before overwriting the main version. ## Steps for Text2SQL Index Deployment +### Entity Schema Index + 1. Update `.env` file with the associated values. Not all values are required dependent on whether you are using System / User Assigned Identities or a Key based authentication. 2. Adjust `text_2_sql.py` with any changes to the index / indexer. The `get_skills()` method implements the skills pipeline. Make any adjustments here in the skills needed to enrich the data source. 3. Run `deploy.py` with the following args: - - `indexer_type text_2_sql`. This selects the `Text2SQLAISearch` sub class. + - `index_type text_2_sql`. This selects the `Text2SQLAISearch` sub class. + - `rebuild`. Whether to delete and rebuild the index. + - `suffix`. Optional parameter that will apply a suffix onto the deployed index and indexer. This is useful if you want deploy a test version, before overwriting the main version. + +### Query Cache Index + +1. Update `.env` file with the associated values. Not all values are required dependent on whether you are using System / User Assigned Identities or a Key based authentication. +2. Adjust `text_2_sql_query_cache.py` with any changes to the index. **There is no provided indexer or skillset for this cache, it is expected that application code will write directly to it.** +3. Run `deploy.py` with the following args: + + - `index_type text_2_sql_query_cache`. This selects the `Text2SQLQueryCacheAISearch` sub class. - `rebuild`. Whether to delete and rebuild the index. - `suffix`. Optional parameter that will apply a suffix onto the deployed index and indexer. This is useful if you want deploy a test version, before overwriting the main version. diff --git a/deploy_ai_search/deploy.py b/deploy_ai_search/deploy.py index ee40aef..3288ebf 100644 --- a/deploy_ai_search/deploy.py +++ b/deploy_ai_search/deploy.py @@ -3,6 +3,7 @@ import argparse from rag_documents import RagDocumentsAISearch from text_2_sql import Text2SqlAISearch +from text_2_sql_query_cache import Text2SqlQueryCacheAISearch def deploy_config(arguments: argparse.Namespace): @@ -10,16 +11,20 @@ def deploy_config(arguments: argparse.Namespace): Args: arguments (argparse.Namespace): The arguments passed to the script""" - if arguments.indexer_type == "rag": + if arguments.index_type == "rag": index_config = RagDocumentsAISearch( suffix=arguments.suffix, rebuild=arguments.rebuild, enable_page_by_chunking=arguments.enable_page_chunking, ) - elif arguments.indexer_type == "text_2_sql": + elif arguments.index_type == "text_2_sql": index_config = Text2SqlAISearch( suffix=arguments.suffix, rebuild=arguments.rebuild ) + elif arguments.index_type == "text_2_sql_query_cache": + index_config = Text2SqlQueryCacheAISearch( + suffix=arguments.suffix, rebuild=arguments.rebuild + ) else: raise ValueError("Invalid Indexer Type") @@ -32,7 +37,7 @@ def deploy_config(arguments: argparse.Namespace): if __name__ == "__main__": parser = argparse.ArgumentParser(description="Process some arguments.") parser.add_argument( - "--indexer_type", + "--index_type", type=str, required=True, help="Type of Indexer want to deploy.", diff --git a/deploy_ai_search/environment.py b/deploy_ai_search/environment.py index 5b67c08..3e47955 100644 --- a/deploy_ai_search/environment.py +++ b/deploy_ai_search/environment.py @@ -13,6 +13,7 @@ class IndexerType(Enum): RAG_DOCUMENTS = "rag-documents" TEXT_2_SQL = "text-2-sql" + TEXT_2_SQL_QUERY_CACHE = "text-2-sql-query-cache" class IdentityType(Enum): diff --git a/deploy_ai_search/text_2_sql.py b/deploy_ai_search/text_2_sql.py index 6f44c0f..38a592e 100644 --- a/deploy_ai_search/text_2_sql.py +++ b/deploy_ai_search/text_2_sql.py @@ -40,8 +40,6 @@ def __init__(self, suffix: str | None = None, rebuild: bool | None = False): self.parsing_mode = BlobIndexerParsingMode.JSON_ARRAY - self.entities = [] - def get_index_fields(self) -> list[SearchableField]: """This function returns the index fields for sql index. diff --git a/deploy_ai_search/text_2_sql_query_cache.py b/deploy_ai_search/text_2_sql_query_cache.py new file mode 100644 index 0000000..9dc0c9c --- /dev/null +++ b/deploy_ai_search/text_2_sql_query_cache.py @@ -0,0 +1,122 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +from azure.search.documents.indexes.models import ( + SearchFieldDataType, + SearchField, + SearchableField, + SemanticField, + SemanticPrioritizedFields, + SemanticConfiguration, + SemanticSearch, + SimpleField, + ComplexField, +) +from ai_search import AISearch +from environment import ( + IndexerType, +) + + +class Text2SqlQueryCacheAISearch(AISearch): + """This class is used to deploy the sql index.""" + + def __init__(self, suffix: str | None = None, rebuild: bool | None = False): + """Initialize the Text2SqlAISearch class. This class implements the deployment of the sql index. + + Args: + suffix (str, optional): The suffix for the indexer. Defaults to None. If an suffix is provided, it is assumed to be a test indexer. + rebuild (bool, optional): Whether to rebuild the index. Defaults to False. + """ + self.indexer_type = IndexerType.TEXT_2_SQL_QUERY_CACHE + super().__init__(suffix, rebuild) + + def get_index_fields(self) -> list[SearchableField]: + """This function returns the index fields for sql index. + + Returns: + list[SearchableField]: The index fields for sql index""" + + fields = [ + SimpleField( + name="Id", type=SearchFieldDataType.String, key=True, retrievable=False + ), + SearchableField( + name="Question", + type=SearchFieldDataType.String, + analyzer_name="keyword", + ), + SearchField( + name="QuestionEmbedding", + type=SearchFieldDataType.Collection(SearchFieldDataType.Single), + vector_search_dimensions=self.environment.open_ai_embedding_dimensions, + vector_search_profile_name=self.vector_search_profile_name, + ), + SearchableField( + name="Query", type=SearchFieldDataType.String, filterable=True + ), + SearchField( + name="QueryEmbedding", + type=SearchFieldDataType.Collection(SearchFieldDataType.Single), + vector_search_dimensions=self.environment.open_ai_embedding_dimensions, + vector_search_profile_name=self.vector_search_profile_name, + ), + ComplexField( + name="Schemas", + collection=True, + fields=[ + SearchableField( + name="Entity", + type=SearchFieldDataType.String, + filterable=True, + ), + ComplexField( + name="Columns", + collection=True, + fields=[ + SearchableField( + name="Name", type=SearchFieldDataType.String + ), + SearchableField( + name="Definition", type=SearchFieldDataType.String + ), + SearchableField( + name="Type", type=SearchFieldDataType.String + ), + SimpleField( + name="AllowedValues", + type=SearchFieldDataType.String, + collection=True, + ), + SimpleField( + name="SampleValues", + type=SearchFieldDataType.String, + collection=True, + ), + ], + ), + ], + ), + ] + + return fields + + def get_semantic_search(self) -> SemanticSearch: + """This function returns the semantic search configuration for sql index + + Returns: + SemanticSearch: The semantic search configuration""" + + semantic_config = SemanticConfiguration( + name=self.semantic_config_name, + prioritized_fields=SemanticPrioritizedFields( + title_field=SemanticField(field_name="Question"), + keywords_fields=[ + SemanticField(field_name="Query"), + ], + ), + ) + + semantic_search = SemanticSearch(configurations=[semantic_config]) + + return semantic_search diff --git a/images/Plugin Based RAG Flow.png b/images/Plugin Based RAG Flow.png index 97c02d4..5e90a85 100644 Binary files a/images/Plugin Based RAG Flow.png and b/images/Plugin Based RAG Flow.png differ diff --git a/text_2_sql/.env b/text_2_sql/.env index 76c7318..85e9dd8 100644 --- a/text_2_sql/.env +++ b/text_2_sql/.env @@ -1,16 +1,19 @@ -OpenAI__CompletionDeployment= -OpenAI__EmbeddingModel= -OpenAI__Endpoint= -OpenAI__ApiKey= -OpenAI__ApiVersion= -Text2Sql__DatabaseEngine= -Text2Sql__DatabaseName= -Text2Sql__DatabaseConnectionString= -AIService__AzureSearchOptions__Endpoint= -AIService__AzureSearchOptions__Key= -AIService__AzureSearchOptions__RagDocuments__Index= -AIService__AzureSearchOptions__Text2Sql__Index= -AIService__AzureSearchOptions__RagDocuments__SemanticConfig= -AIService__AzureSearchOptions__Text2Sql__SemanticConfig= -IdentityType= # system_assigned or user_assigned or key -ClientId= +OpenAI__CompletionDeployment= +OpenAI__EmbeddingModel= +OpenAI__Endpoint= +OpenAI__ApiKey= +OpenAI__ApiVersion= +Text2Sql__DatabaseEngine= +Text2Sql__UseQueryCache= +Text2Sql__DatabaseName= +Text2Sql__DatabaseConnectionString= +AIService__AzureSearchOptions__Endpoint= +AIService__AzureSearchOptions__Key= +AIService__AzureSearchOptions__RagDocuments__Index= +AIService__AzureSearchOptions__Text2Sql__Index= +AIService__AzureSearchOptions__Text2SqlQueryCache__Index= +AIService__AzureSearchOptions__RagDocuments__SemanticConfig= +AIService__AzureSearchOptions__Text2Sql__SemanticConfig= +AIService__AzureSearchOptions__Text2SqlQueryCache__SemanticConfig= +IdentityType= # system_assigned or user_assigned or key +ClientId= diff --git a/text_2_sql/README.md b/text_2_sql/README.md index 523177c..b5fc36e 100644 --- a/text_2_sql/README.md +++ b/text_2_sql/README.md @@ -6,7 +6,7 @@ The implementation is written for [Semantic Kernel](https://github.com/microsoft The sample provided works with Azure SQL Server, although it has been easily adapted to other SQL sources such as Snowflake. -**Two approaches are provided for schema management. A prompt based approach and a vector database based approach. See Multi-Shot Approach for more details** +**Three iterations on the approache are provided for SQL query generation. A prompt based approach and a two vector database based approaches. See Multi-Shot Approach for more details** ## High Level Workflow @@ -27,23 +27,37 @@ Generating SQL queries and executing them to provide context for the RAG applica ## Multi-Shot Approach -A common way to perform Text2SQL generation is to provide the complete schema information (either a full schema or a plain text description) inside the initial prompt. Whilst this works for small databases, there are issues with scalability as the number of tables and views exposed to the LLM increases: +A common way to perform Text2SQL generation _(Iteration 1)_ is to provide the complete schema information (either a full schema or a plain text description) inside the initial prompt. Whilst this works for small databases, there are issues with scalability as the number of tables and views exposed to the LLM increases: - More tables / views significantly increases the number of tokens used within the prompt and the cost of inference. - More schema information can cause confusion with the LLM. In our original use case, when exceeding 5 complex tables / views, we found that the LLM could get confused between which columns belonged to which entity and as such, would generate invalid SQL queries. -To solve these issues, a Multi-Shot approach is used: +To solve these issues, a Multi-Shot approach is developed. Below is the iterations of development on the Text2SQL query component. -![Comparison between a common Text2SQL approach and a Multi-Shot Text2SQL approach.](./images/OneShot%20SQL%20vs%20TwoShot%20SQL%20OpenAI.png "Multi Shot SQL Approach") +![Comparison between a common Text2SQL approach and a Multi-Shot Text2SQL approach.](./images/Text2SQL%20Approaches.png "Multi Shot SQL Approaches") -To solve this, two different approaches can be used: - - Injection of a brief description of the available entities is injected into the prompt. This limits the number of tokens used and avoids filling the prompt with confusing schema information. - - Indexing the entity definitions in a vector database, such as AI Search, and querying it retrieve the most relevant entities for the query. +Three different iterations are presented and code provided for: + - **Iteration 2:** Injection of a brief description of the available entities is injected into the prompt. This limits the number of tokens used and avoids filling the prompt with confusing schema information. + - **Iteration 3:** Indexing the entity definitions in a vector database, such as AI Search, and querying it to retrieve the most relevant entities for the key terms from the query. + - **Iteration 4:** Keeping an index of commonly asked questions and which schema / SQL query they resolve to. Additionally, indexing the entity definitions in a vector database, such as AI Search _(same as Iteration 3)_. First querying this index to see if a similar SQL query can be obtained. If not, falling back to the schema index, and querying it to retrieve the most relevant entities for the key terms from the query. -Both approaches limit the number of tokens used and avoids filling the prompt with confusing schema information. +All approaches limit the number of tokens used and avoids filling the prompt with confusing schema information. Using Auto-Function calling capabilities, the LLM is able to retrieve from the plugin the full schema information for the views / tables that it considers useful for answering the question. Once retrieved, the full SQL query can then be generated. The schemas for multiple views / tables can be retrieved to allow the LLM to perform joins and other complex queries. +For the query cache enabled approach, AI Search is used as a vector based cache, but any other cache that supports vector queries could be used, such as Redis. + +### Comparison of Iterations +| | Common Text2SQL Approach | Prompt Based Multi-Shot Text2SQL Approach | Vector Based Multi-Shot Text2SQL Approach | Vector Based Multi-Shot Text2SQL Approach With Query Cache | +|-|-|-|-|-| +|**Advantages** | Fast for a limited number of entities. | Significant reduction in token usage. | Significant reduction in token usage. | Significant reduction in token usage. +| | | | Scales well to multiple entities. | Scales well to multiple entities. | +| | | | Uses a vector approach to detect the best fitting entity which is faster than using an LLM. Matching is offloaded to AI Search. | Uses a vector approach to detect the best fitting entity which is faster than using an LLM. Matching is offloaded to AI Search. | +| | | | | Significantly faster to answer similar questions as best fitting entity detection is skipped. Observed tests resulted in almost half the time for final output compared to the previous iteration. | +|**Disadvantages** | Slows down significantly as the number of entities increases. | Uses LLM to detect the best fitting entity which is slow compared to a vector approach. | Could be sped up without auto function calling for vector search, but passing whole query **may** reduce reduce matching performance. | Slower than other approaches for the first time a question with no similar questions in the cache is asked. | +| | Consumes a significant number of tokens as number of entities increases. | As number of entities increases, token usage will grow but at a lesser rate than Iteration 1. | AI Search adds additional cost to the solution. | AI Search adds additional cost to the solution. | +| | LLM struggled to differentiate which table to choose with the large amount of information passed. | | | + ## Sample Output ### What is the top performing product by quantity of units sold? @@ -92,6 +106,7 @@ The top-performing product by quantity of units sold is the **Classic Vest, S** - `./rag_with_prompt_based_text_2_sql.ipynb` provides example of how to utilise the Prompt Based Text2SQL plugin to query the database. - `./rag_with_vector_based_text_2_sql.ipynb` provides example of how to utilise the Vector Based Text2SQL plugin to query the database. +- `./rag_with_vector_based_text_2_sql_query_cache.ipynb` provides example of how to utilise the Vector Based Text2SQL plugin, alongside the query cache, to query the database. - `./rag_with_ai_search_and_text_2_sql.ipynb` provides an example of how to use the Text2SQL and an AISearch plugin in parallel to automatically retrieve data from the most relevant source to answer the query. - This setup is useful for a production application as the SQL Database is unlikely to be able to answer all the questions a user may ask. @@ -141,7 +156,13 @@ The data dictionary is stored in `./plugins/sql_plugin/entities.json`. Below is A full data dictionary must be built for all the views / tables you which to expose to the LLM. The metadata provide directly influences the accuracy of the Text2SQL component. -## Prompt Based SQL Plugin +## Common Plugin Components + +#### run_sql_query() + +This method is called by the Semantic Kernel framework automatically, when instructed to do so by the LLM, to run a SQL query against the given database. It returns a JSON string containing a row wise dump of the results returned. These results are then interpreted to answer the question. + +## Prompt Based SQL Plugin (Iteration 2) This approach works well for a small number of entities (test on up to 20 entities with hundreds of columns). It performed well on the testing, with correct metadata, we achieved 100% accuracy on the test set. @@ -163,11 +184,7 @@ The **target_engine** is passed to the prompt, along with **engine_specific_rule This method is called by the Semantic Kernel framework automatically, when instructed to do so by the LLM, to fetch the full schema definitions for a given entity. This returns a JSON string of the chosen entity which allows the LLM to understand the column definitions and their associated metadata. This can be called in parallel for multiple entities. -#### run_sql_query() - -This method is called by the Semantic Kernel framework automatically, when instructed to do so by the LLM, to run a SQL query against the given database. It returns a JSON string containing a row wise dump of the results returned. These results are then interpreted to answer the question. - -## Vector Based SQL Plugin +## Vector Based SQL Plugin (Iterations 3 & 4) This approach allows the system to scale without significantly increasing the number of tokens used within the system prompt. Indexing and running an AI Search instance consumes additional cost, compared to the prompt based approach. @@ -185,15 +202,17 @@ This method simply returns a pre-made system prompt that contains optimised and The **target_engine** is passed to the prompt, along with **engine_specific_rules** to ensure that the SQL queries generated work on the target engine. +**If the query cache is enabled, the prompt is adjusted to instruct the LLM to look at the cached data first, before calling `get_entity_schema()`.** + #### get_entity_schema() This method is called by the Semantic Kernel framework automatically, when instructed to do so by the LLM, to search the AI Search instance with the given text. The LLM is able to pass the key terms from the user query, and retrieve a ranked list of the most suitable entities to answer the question. The search text passed is vectorised against the entity level **Description** columns. A hybrid Semantic Reranking search is applied against the **EntityName**, **Entity**, **Columns/Name** fields. -#### run_sql_query() +#### run_ai_search_query() -This method is called by the Semantic Kernel framework automatically, when instructed to do so by the LLM, to run a SQL query against the given database. It returns a JSON string containing a row wise dump of the results returned. These results are then interpreted to answer the question. +The vector based with query cache notebook uses the `run_ai_search_query()` method to fetch the most relevant previous query and injects it into the prompt before the initial LLM call. The use of Auto-Function Calling here is avoided to reduce the response time as the cache index will always be used first. ## Tips for good Text2SQL performance. diff --git a/text_2_sql/ai_search.py b/text_2_sql/ai_search.py new file mode 100644 index 0000000..201158c --- /dev/null +++ b/text_2_sql/ai_search.py @@ -0,0 +1,122 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +from azure.identity import DefaultAzureCredential +from openai import AsyncAzureOpenAI +from azure.core.credentials import AzureKeyCredential +from azure.search.documents.models import VectorizedQuery +from azure.search.documents.aio import SearchClient +from environment import IdentityType, get_identity_type +import os +import logging +import base64 + + +async def run_ai_search_query( + query, + vector_fields: list[str], + retrieval_fields: list[str], + index_name: str, + semantic_config: str, + top=5, +): + """Run the AI search query.""" + identity_type = get_identity_type() + + async with AsyncAzureOpenAI( + # This is the default and can be omitted + api_key=os.environ["OpenAI__ApiKey"], + azure_endpoint=os.environ["OpenAI__Endpoint"], + api_version=os.environ["OpenAI__ApiVersion"], + ) as open_ai_client: + embeddings = await open_ai_client.embeddings.create( + model=os.environ["OpenAI__EmbeddingModel"], input=query + ) + + # Extract the embedding vector + embedding_vector = embeddings.data[0].embedding + + vector_query = VectorizedQuery( + vector=embedding_vector, + k_nearest_neighbors=5, + fields=",".join(vector_fields), + ) + + if identity_type == IdentityType.SYSTEM_ASSIGNED: + credential = DefaultAzureCredential() + elif identity_type == IdentityType.USER_ASSIGNED: + credential = DefaultAzureCredential( + managed_identity_client_id=os.environ["ClientID"] + ) + else: + credential = AzureKeyCredential( + os.environ["AIService__AzureSearchOptions__Key"] + ) + async with SearchClient( + endpoint=os.environ["AIService__AzureSearchOptions__Endpoint"], + index_name=index_name, + credential=credential, + ) as search_client: + results = await search_client.search( + top=top, + semantic_configuration_name=semantic_config, + search_text=query, + select=",".join(retrieval_fields), + vector_queries=[vector_query], + ) + + combined_results = [ + result async for results in results.by_page() async for result in results + ] + + logging.info("Results: %s", combined_results) + + return combined_results + + +async def add_entry_to_index(document: dict, vector_fields: dict, index_name: str): + """Add an entry to the search index.""" + + logging.info("Document: %s", document) + logging.info("Vector Fields: %s", vector_fields) + + for field in vector_fields.keys(): + if field not in document.keys(): + raise ValueError(f"Field {field} is not in the document.") + + identity_type = get_identity_type() + + fields_to_embed = {field: document[field] for field in vector_fields} + + async with AsyncAzureOpenAI( + # This is the default and can be omitted + api_key=os.environ["OpenAI__ApiKey"], + azure_endpoint=os.environ["OpenAI__Endpoint"], + api_version=os.environ["OpenAI__ApiVersion"], + ) as open_ai_client: + embeddings = await open_ai_client.embeddings.create( + model=os.environ["OpenAI__EmbeddingModel"], input=fields_to_embed.values() + ) + + # Extract the embedding vector + for i, field in enumerate(vector_fields.values()): + document[field] = embeddings.data[i].embedding + + document["Id"] = base64.b64encode(document["Question"].encode()).decode("utf-8") + logging.info("Document with embeddings: %s", document) + + if identity_type == IdentityType.SYSTEM_ASSIGNED: + credential = DefaultAzureCredential() + elif identity_type == IdentityType.USER_ASSIGNED: + credential = DefaultAzureCredential( + managed_identity_client_id=os.environ["ClientID"] + ) + else: + credential = AzureKeyCredential( + os.environ["AIService__AzureSearchOptions__Key"] + ) + async with SearchClient( + endpoint=os.environ["AIService__AzureSearchOptions__Endpoint"], + index_name=index_name, + credential=credential, + ) as search_client: + await search_client.upload_documents(documents=[document]) diff --git a/text_2_sql/environment.py b/text_2_sql/environment.py new file mode 100644 index 0000000..232254e --- /dev/null +++ b/text_2_sql/environment.py @@ -0,0 +1,30 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +import os +from enum import Enum + + +class IdentityType(Enum): + """The type of the indexer""" + + USER_ASSIGNED = "user_assigned" + SYSTEM_ASSIGNED = "system_assigned" + KEY = "key" + + +def get_identity_type() -> IdentityType: + """This function returns the identity type. + + Returns: + IdentityType: The identity type + """ + identity = os.environ.get("IdentityType") + + if identity == "user_assigned": + return IdentityType.USER_ASSIGNED + elif identity == "system_assigned": + return IdentityType.SYSTEM_ASSIGNED + elif identity == "key": + return IdentityType.KEY + else: + raise ValueError("Invalid identity type") diff --git a/text_2_sql/images/OneShot SQL vs TwoShot SQL OpenAI.png b/text_2_sql/images/OneShot SQL vs TwoShot SQL OpenAI.png deleted file mode 100644 index 6b9f6e8..0000000 Binary files a/text_2_sql/images/OneShot SQL vs TwoShot SQL OpenAI.png and /dev/null differ diff --git a/text_2_sql/images/Text2SQL Approaches.png b/text_2_sql/images/Text2SQL Approaches.png new file mode 100644 index 0000000..90310e3 Binary files /dev/null and b/text_2_sql/images/Text2SQL Approaches.png differ diff --git a/text_2_sql/plugins/ai_search_plugin/ai_search_plugin.py b/text_2_sql/plugins/ai_search_plugin/ai_search_plugin.py index fdd18c8..b09997f 100644 --- a/text_2_sql/plugins/ai_search_plugin/ai_search_plugin.py +++ b/text_2_sql/plugins/ai_search_plugin/ai_search_plugin.py @@ -2,23 +2,10 @@ # Licensed under the MIT License. from semantic_kernel.functions import kernel_function from typing import Annotated -from azure.identity import DefaultAzureCredential -from openai import AsyncAzureOpenAI -from azure.core.credentials import AzureKeyCredential -from azure.search.documents.models import VectorizedQuery -from azure.search.documents.aio import SearchClient import os import json import logging -from enum import Enum - - -class IdentityType(Enum): - """The type of the indexer""" - - USER_ASSIGNED = "user_assigned" - SYSTEM_ASSIGNED = "system_assigned" - KEY = "key" +from ai_search import run_ai_search_query class AISearchPlugin: @@ -47,67 +34,13 @@ async def query_document_storage( str: The JSON representation of the search results. """ - identity = os.environ.get("IdentityType").lower() - - if identity == "user_assigned": - identity_type = IdentityType.USER_ASSIGNED - elif identity == "system_assigned": - identity_type = IdentityType.SYSTEM_ASSIGNED - elif identity == "key": - identity_type = IdentityType.KEY - else: - raise ValueError("Invalid identity type") - - async with AsyncAzureOpenAI( - # This is the default and can be omitted - api_key=os.environ["OpenAI__ApiKey"], - azure_endpoint=os.environ["OpenAI__Endpoint"], - api_version=os.environ["OpenAI__ApiVersion"], - ) as open_ai_client: - embeddings = await open_ai_client.embeddings.create( - model=os.environ["OpenAI__EmbeddingModel"], input=text - ) - - # Extract the embedding vector - embedding_vector = embeddings.data[0].embedding - - vector_query = VectorizedQuery( - vector=embedding_vector, - k_nearest_neighbors=5, - fields="ChunkEmbedding", + documents = await run_ai_search_query( + text, + ["ChunkEmbedding"], + ["Title", "Chunk", "SourceUri"], + os.environ["AIService__AzureSearchOptions__RagDocuments__Index"], + os.environ["AIService__AzureSearchOptions__RagDocuments__SemanticConfig"], ) - if identity_type == IdentityType.SYSTEM_ASSIGNED: - credential = DefaultAzureCredential() - elif identity_type == IdentityType.USER_ASSIGNED: - credential = DefaultAzureCredential( - managed_identity_client_id=os.environ["ClientID"] - ) - else: - credential = AzureKeyCredential( - os.environ["AIService__AzureSearchOptions__Key"] - ) - async with SearchClient( - endpoint=os.environ["AIService__AzureSearchOptions__Endpoint"], - index_name=os.environ["AIService__AzureSearchOptions__RagDocuments__Index"], - credential=credential, - ) as search_client: - results = await search_client.search( - top=5, - query_type="semantic", - semantic_configuration_name=os.environ[ - "AIService__AzureSearchOptions__RagDocuments__SemanticConfig" - ], - search_text=text, - select="Title,Chunk,SourceUri", - vector_queries=[vector_query], - ) - - documents = [ - document - async for result in results.by_page() - async for document in result - ] - logging.debug("Results: %s", documents) return json.dumps(documents, default=str) diff --git a/text_2_sql/plugins/vector_based_sql_plugin/vector_based_sql_plugin.py b/text_2_sql/plugins/vector_based_sql_plugin/vector_based_sql_plugin.py index 0a4930a..9e88fbb 100644 --- a/text_2_sql/plugins/vector_based_sql_plugin/vector_based_sql_plugin.py +++ b/text_2_sql/plugins/vector_based_sql_plugin/vector_based_sql_plugin.py @@ -5,21 +5,8 @@ from typing import Annotated import os import json -from azure.core.credentials import AzureKeyCredential import logging -from azure.identity import DefaultAzureCredential -from openai import AsyncAzureOpenAI -from azure.search.documents.models import VectorizedQuery -from azure.search.documents.aio import SearchClient -from enum import Enum - - -class IdentityType(Enum): - """The type of the indexer""" - - USER_ASSIGNED = "user_assigned" - SYSTEM_ASSIGNED = "system_assigned" - KEY = "key" +from ai_search import run_ai_search_query class VectorBasedSQLPlugin: @@ -40,7 +27,9 @@ def __init__(self, database: str, target_engine: str = "Microsoft TSQL Server"): self.database = database self.target_engine = target_engine - def system_prompt(self, engine_specific_rules: str | None = None) -> str: + def system_prompt( + self, engine_specific_rules: str | None = None, query_cache: str | None = None + ) -> str: """Get the schemas for the database entities and provide a system prompt for the user. Returns: @@ -50,26 +39,43 @@ def system_prompt(self, engine_specific_rules: str | None = None) -> str: if engine_specific_rules: engine_specific_rules = f"\n The following {self.target_engine} Syntax rules must be adhered to.\n {engine_specific_rules}" - system_prompt = f"""Use the 'GetEntitySchema()' function to search for the most relevant schemas for the data that you wish to obtain. Use the 'RunSQLQuery()' function to run the SQL query against the database. + use_query_cache = ( + os.environ.get("Text2Sql__UseQueryCache", "False").lower() == "true" + ) + + if use_query_cache: + query_prompt = f"""First look at the cached queries, SQL templates and schemas to see if you can use them to formulate a SQL query. If you can't find a suitable query, use the 'GetEntitySchema()' function to search for the most relevant schemas for the data that you wish to obtain. + + [BEGIN QUERY CACHE] + {query_cache} + [END QUERY CACHE] + """ + else: + query_prompt = """Use the 'GetEntitySchema()' function to search for the most relevant schemas for the data that you wish to obtain. + + Always generate the SQL query based on the GetEntitySchema() function output, do not use the chat history data to generate the SQL query. + Only use the column names obtained from GetEntitySchema() when constructing a SQL query, do not make up column names.""" + + system_prompt = f"""{query_prompt} + + Use the 'RunSQLQuery()' function to run the SQL query against the database. Output corresponding text values in the answer for columns where there is an ID. For example, if the column is 'ProductID', output the corresponding 'ProductModel' in the response. Do not include the ID in the response. If a user is asking for a comparison, always compare the relevant values in the database. The target database engine is {self.target_engine}, SQL queries must be able compatible to run on {self.target_engine}. {engine_specific_rules} - Always generate the SQL query based on the GetEntitySchema() function output, do not use the chat history data to generate the SQL query. - Only use the column names obtained from GetEntitySchema() when constructing a SQL query, do not make up column names. You must only provide SELECT SQL queries. - For a given entity, use the 'SelectFromEntity' property returned from 'GetEntitySchema()' function in the SELECT FROM part of the SQL query. If the property is {{'SelectFromEntity': 'test_schema.test_table'}}, the select statement will be formulated from 'SELECT FROM test_schema.test_table WHERE . + For a given entity, use the 'SelectFromEntity' property returned in the schema in the SELECT FROM part of the SQL query. If the property is {{'SelectFromEntity': 'test_schema.test_table'}}, the select statement will be formulated from 'SELECT FROM test_schema.test_table WHERE . If you don't know how the value is formatted in a column, run a query against the column to get the unique values that might match your query. - Some columns returned from 'GetEntitySchema()' may have the properties 'AllowedValues' or 'SampleValues'. Use these values to determine the possible values that can be used in the SQL query. + Some columns in the schema may have the properties 'AllowedValues' or 'SampleValues'. Use these values to determine the possible values that can be used in the SQL query. The source title to cite is the 'EntityName' property. The source reference is the SQL query used. The source chunk is the result of the SQL query used to answer the user query in Markdown table format. e.g. {{ 'title': "vProductAndDescription", 'chunk': '| ProductID | Name | ProductModel | Culture | Description |\\n|-----------|-------------------|--------------|---------|----------------------------------|\\n| 101 | Mountain Bike | MT-100 | en | A durable bike for mountain use. |\\n| 102 | Road Bike | RB-200 | en | Lightweight bike for road use. |\\n| 103 | Hybrid Bike | HB-300 | fr | Vélo hybride pour usage mixte. |\\n', 'reference': 'SELECT ProductID, Name, ProductModel, Culture, Description FROM vProductAndDescription WHERE Culture = \"en\";' }}""" return system_prompt @kernel_function( - description="Gets the schema of a view or table in the SQL Database by selecting the most relevant entity based on the search term. Several entities may be returned.", + description="Gets the schema of a view or table in the SQL Database by selecting the most relevant entity based on the search term. Extract key terms from the user question and use these as the search term. Several entities may be returned.", name="GetEntitySchema", ) async def get_entity_schemas( @@ -89,72 +95,19 @@ async def get_entity_schemas( str: The schema of the views or tables in JSON format. """ - identity = os.environ.get("IdentityType").lower() - - if identity == "user_assigned": - identity_type = IdentityType.USER_ASSIGNED - elif identity == "system_assigned": - identity_type = IdentityType.SYSTEM_ASSIGNED - elif identity == "key": - identity_type = IdentityType.KEY - else: - raise ValueError("Invalid identity type") - - async with AsyncAzureOpenAI( - # This is the default and can be omitted - api_key=os.environ["OpenAI__ApiKey"], - azure_endpoint=os.environ["OpenAI__Endpoint"], - api_version=os.environ["OpenAI__ApiVersion"], - ) as open_ai_client: - embeddings = await open_ai_client.embeddings.create( - model=os.environ["OpenAI__EmbeddingModel"], input=text - ) - - # Extract the embedding vector - embedding_vector = embeddings.data[0].embedding - - vector_query = VectorizedQuery( - vector=embedding_vector, - k_nearest_neighbors=5, - fields="DescriptionEmbedding", + schemas = await run_ai_search_query( + text, + ["DescriptionEmbedding"], + ["Entity", "EntityName", "Description", "Columns"], + os.environ["AIService__AzureSearchOptions__Text2Sql__Index"], + os.environ["AIService__AzureSearchOptions__Text2Sql__SemanticConfig"], + top=3, ) - if identity_type == IdentityType.SYSTEM_ASSIGNED: - credential = DefaultAzureCredential() - elif identity_type == IdentityType.USER_ASSIGNED: - credential = DefaultAzureCredential( - managed_identity_client_id=os.environ["ClientID"] - ) - else: - credential = AzureKeyCredential( - os.environ["AIService__AzureSearchOptions__Key"] - ) - - async with SearchClient( - endpoint=os.environ["AIService__AzureSearchOptions__Endpoint"], - index_name=os.environ["AIService__AzureSearchOptions__Text2Sql__Index"], - credential=credential, - ) as search_client: - results = await search_client.search( - top=3, - query_type="semantic", - semantic_configuration_name=os.environ[ - "AIService__AzureSearchOptions__Text2Sql__SemanticConfig" - ], - search_text=text, - select="Entity,EntityName,Description,Columns", - vector_queries=[vector_query], - ) - - entities = [] - # Add the SelectFromEntity property to the entity - async for result in results.by_page(): - async for entity in result: - entity["SelectFromEntity"] = f"{self.database}.{entity['Entity']}" - entities.append(entity) - - logging.debug("Results: %s", entities) - return json.dumps(entities, default=str) + for schema in schemas: + schema["SelectFromEntity"] = f"{self.database}.{schema['Entity']}" + + return json.dumps(schemas, default=str) @kernel_function( description="Runs an SQL query against the SQL Database to extract information.", diff --git a/text_2_sql/query_cache_based_prompt.yaml b/text_2_sql/query_cache_based_prompt.yaml new file mode 100644 index 0000000..1fe608e --- /dev/null +++ b/text_2_sql/query_cache_based_prompt.yaml @@ -0,0 +1,123 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +template_format: semantic-kernel +template: | + + As a senior analyst, your primary responsibility is to provide precise and thorough answers to the user's queries. Utilize all the provided functions to craft your responses. You must deliver detailed and accurate final answers with clear explanations and actionable insights. + + Always use the provided functions to obtain key information in order to answer the question. + If you are asked to use always use a function, you must use that function to compliment the answer. + Always use multiple functions to formulate the answer. + Always execute multiple functions in parallel to compliment the results. + + The response to the user must meet the requirements in RESPONSE OUTPUT REQUIREMENTS. + IMPORTANT INFORMATION contains useful information that you can use to aid your knowledge. + CHAT HISTORY contains the previous question and answer pairs in the conversation in JSON format. Do not use this information to answer the question, but to provide context on what was asked previously. + + [IMPORTANT INFORMATION] + + {{$important_information}} + + [END IMPORTANT INFORMATION] + + [RESPONSE OUTPUT REQUIREMENTS] + + The answer MUST be returned in JSON format as { "answer": "", "sources": [ {"title": , "chunk": , "reference": ""}, {"title": , "chunk": , "reference": ""} ], "schemas": [ ] }. + + The 'answer' property MUST meet the requirements in the ANSWER PROPERTY REQUIREMENTS. + The 'sources' property MUST meet the requirements in the SOURCES PROPERTY REQUIREMENTS. + The 'schemas' property MUST meet the requirements in the SCHEMAS PROPERTY REQUIREMENTS. + + Do NOT return anything outside of the provided JSON property. Ensure that this is valid JSON returned. + + Never return an empty response or null value. Always answer the question. + + [ANSWER PROPERTY REQUIREMENTS] + 1. Language and Tone: + Use only British English throughout the response. + Employ a business-friendly language that is professional and easy to understand. + + 2. Content Restrictions: + Do not use any profanity, offensive language, hate speech, or code in the response. + If you encounter any such content, handle it gracefully by omitting or rephrasing it appropriately. + + 3. Information Sources: + Use only information from the provided functions and specified important information. + Do not use any external sources or the chat history for constructing the response. + In case of conflicting information, prioritize data from the SQL Database as the primary source of truth. + + 4. Calculations: + For any required calculations, use only the values provided in the context. + Provide a brief, clear explanation of the calculations beneath the results. + + 5. Response Structure: + Ensure the response is direct, easy to understand, and well-structured. + Format the response using Markdown for clarity and readability. + Use bold sub-headings for clarity where needed. Only use Markdown headings Level 3 (###) and Level 4 (####). + Use bullet points or numbered lists when appropriate. + Do not vary the font size within the same sentence. + + 6. Citations: + All factual information used in the answer must be cited with numbered references. For example, [1] should be used to refer to the first source. + Each citation in the answer must correspond to a single entry in the 'sources' object. + The same citation and corresponding context chunk may be used multiple times if needed. + Place the numbered citation at the end of each relevant sentence that uses information from the sources. + Ensure that each source listed in the 'sources' property is cited at least once in the answer. + Do not provide a list of definitions from the business glossary; use such information only to enhance the answer contextually. + + 7. Citations Format: + Citations should be embedded within the text, not as a separate list at the end of the 'answer' property. + [END ANSWER PROPERTY REQUIREMENTS] + + [SCHEMAS PROPERTY REQUIREMENTS] + 1. Inclusion Criteria: + If you used a schema obtained from 'GetEntitySchemas' function, it must be returned in the 'schemas' property. The 'schemas' property should contain a list of all the schemas used to create the SQL query. + + 3. Schema Format: + Each schema entry should be formatted as: {"Entity": "", "Columns", [ {"Name": "", "Definition": , "Type": "" } ]}. This is the same format as the 'GetEntitySchemas' function output. Simply copy the schema from the function output to the 'schemas' property and remove the not needed properties. + + [END SCHEMAS PROPERTY REQUIREMENTS] + + [SOURCES PROPERTY REQUIREMENTS] + 1. Reference Inclusion: + Include all corresponding references for all cited content in the 'answer' property. + Place the references in the 'sources' property. + + 2. Source Format: + Each entry in the 'sources' property must be formatted as: {"title": "", "chunk": "", "reference": ""} + For example, a complete response with two citations would be formatted as: { "answer": "", "sources": [ {"title": , "chunk": , "reference": ""}, {"title": , "chunk": , "reference": ""} ] } + + 3. Source Chunk: + The 'chunk' property should contain a concise, unedited snippet of the relevant context that supports the answer. + + 4. Mandatory References: + Ensure that every citation in the 'answer' has a corresponding entry in the 'sources' property. + Every entry in the 'sources' property must be cited at least once in the answer. + [END SOURCES PROPERTY REQUIREMENTS] + + [END RESPONSE OUTPUT REQUIREMENTS] + + {{$chat_history}} + {{$user_input}} +description: Chatbot +name: ChatBot +input_variables: + - name: user_input + description: The user input + is_required: true + - name: important_information + description: Useful information for the chatbot + is_required: true +output_variable: + description: The chatbot response formatted in JSON as defined in the FINAL ANSWER OUTPUT REQUIREMENTS. +execution_settings: + default: + function_choice_behavior: + type: auto + maximum_auto_invoke_attempts: 5 + filters: + excluded_plugins: + - ChatBot + response_format: + type: json_object + temperature: 0.5 diff --git a/text_2_sql/rag_with_prompt_based_text_2_sql.ipynb b/text_2_sql/rag_with_prompt_based_text_2_sql.ipynb index 88e26b4..90494c4 100644 --- a/text_2_sql/rag_with_prompt_based_text_2_sql.ipynb +++ b/text_2_sql/rag_with_prompt_based_text_2_sql.ipynb @@ -938,7 +938,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.3" }, "microsoft": { "host": { diff --git a/text_2_sql/rag_with_vector_based_text_2_sql.ipynb b/text_2_sql/rag_with_vector_based_text_2_sql.ipynb index 7563494..6d796d6 100644 --- a/text_2_sql/rag_with_vector_based_text_2_sql.ipynb +++ b/text_2_sql/rag_with_vector_based_text_2_sql.ipynb @@ -53,7 +53,7 @@ "from semantic_kernel.functions.kernel_arguments import KernelArguments\n", "from semantic_kernel.prompt_template.prompt_template_config import PromptTemplateConfig\n", "from IPython.display import display, Markdown\n", - "\n", + "import time\n", "logging.basicConfig(level=logging.INFO)" ] }, diff --git a/text_2_sql/rag_with_vector_based_text_2_sql_query_cache.ipynb b/text_2_sql/rag_with_vector_based_text_2_sql_query_cache.ipynb new file mode 100644 index 0000000..1e02fc4 --- /dev/null +++ b/text_2_sql/rag_with_vector_based_text_2_sql_query_cache.ipynb @@ -0,0 +1,982 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Text2SQL with Semantic Kernel & Azure OpenAI\n", + "\n", + "This notebook demonstrates how the SQL plugin can be integrated with Semantic Kernel and Azure OpenAI to answer questions from the database based on the schemas provided. \n", + "\n", + "A multi-shot approach is used for SQL generation for more reliable results and reduced token usage. More details can be found in the README.md." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "gather": { + "logged": 1718623217703 + }, + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import yaml\n", + "import dotenv\n", + "import json\n", + "from semantic_kernel.connectors.ai.open_ai import (\n", + " AzureChatCompletion,\n", + ")\n", + "from semantic_kernel.contents.chat_history import ChatHistory\n", + "from semantic_kernel.kernel import Kernel\n", + "from plugins.vector_based_sql_plugin.vector_based_sql_plugin import VectorBasedSQLPlugin\n", + "from semantic_kernel.functions.kernel_arguments import KernelArguments\n", + "from semantic_kernel.prompt_template.prompt_template_config import PromptTemplateConfig\n", + "from IPython.display import display, Markdown\n", + "from ai_search import run_ai_search_query, add_entry_to_index\n", + "import time\n", + "logging.basicConfig(level=logging.INFO)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kernel Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "dotenv.load_dotenv()\n", + "kernel = Kernel()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up GPT connections" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "gather": { + "logged": 1718623218006 + }, + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [], + "source": [ + "service_id = \"chat\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "gather": { + "logged": 1718623218267 + }, + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [], + "source": [ + "chat_service = AzureChatCompletion(\n", + " service_id=service_id,\n", + " deployment_name=os.environ[\"OpenAI__CompletionDeployment\"],\n", + " endpoint=os.environ[\"OpenAI__Endpoint\"],\n", + " api_key=os.environ[\"OpenAI__ApiKey\"],\n", + ")\n", + "kernel.add_service(chat_service)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "gather": { + "logged": 1718623218614 + }, + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "KernelPlugin(name='SQL', description=None, functions={'GetEntitySchema': KernelFunctionFromMethod(metadata=KernelFunctionMetadata(name='GetEntitySchema', plugin_name='SQL', description='Gets the schema of a view or table in the SQL Database by selecting the most relevant entity based on the search term. Several entities may be returned.', parameters=[KernelParameterMetadata(name='text', description='The text to run a semantic search against. Relevant entities will be returned.', default_value=None, type_='str', is_required=True, type_object=, schema_data={'type': 'string', 'description': 'The text to run a semantic search against. Relevant entities will be returned.'}, function_schema_include=True)], is_prompt=False, is_asynchronous=True, return_parameter=KernelParameterMetadata(name='return', description='', default_value=None, type_='str', is_required=True, type_object=, schema_data={'type': 'string'}, function_schema_include=True), additional_properties={}), invocation_duration_histogram=, streaming_duration_histogram=, method=>, stream_method=None), 'RunSQLQuery': KernelFunctionFromMethod(metadata=KernelFunctionMetadata(name='RunSQLQuery', plugin_name='SQL', description='Runs an SQL query against the SQL Database to extract information.', parameters=[KernelParameterMetadata(name='sql_query', description='The SQL query to run against the DB', default_value=None, type_='str', is_required=True, type_object=, schema_data={'type': 'string', 'description': 'The SQL query to run against the DB'}, function_schema_include=True)], is_prompt=False, is_asynchronous=True, return_parameter=KernelParameterMetadata(name='return', description='', default_value=None, type_='str', is_required=True, type_object=, schema_data={'type': 'string'}, function_schema_include=True), additional_properties={}), invocation_duration_histogram=, streaming_duration_histogram=, method=>, stream_method=None)})" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Register the SQL Plugin with the Database name to use.\n", + "sql_plugin = VectorBasedSQLPlugin(database=os.environ[\"Text2Sql__DatabaseName\"])\n", + "kernel.add_plugin(sql_plugin, \"SQL\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "## Prompt Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Load prompt and execution settings from the file\n", + "with open(\"./query_cache_based_prompt.yaml\", \"r\") as file:\n", + " data = yaml.safe_load(file.read())\n", + " prompt_template_config = PromptTemplateConfig(**data)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "chat_function = kernel.add_function(\n", + " prompt_template_config=prompt_template_config,\n", + " plugin_name=\"ChatBot\",\n", + " function_name=\"Chat\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ChatBot setup" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "history = ChatHistory()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "async def ask_question(question: str, chat_history: ChatHistory) -> str:\n", + " \"\"\"Asks a question to the chatbot and returns the answer.\n", + " \n", + " Args:\n", + " question (str): The question to ask the chatbot.\n", + " chat_history (ChatHistory): The chat history object.\n", + " \n", + " Returns:\n", + " str: The answer from the chatbot.\n", + " \"\"\"\n", + "\n", + " start_time = time.time()\n", + " cached_schemas = await run_ai_search_query(\n", + " question,\n", + " [\"QuestionEmbedding\", \"QueryEmbedding\"],\n", + " [\"Question\", \"Query\", \"Schemas\"],\n", + " os.environ[\"AIService__AzureSearchOptions__Text2SqlQueryCache__Index\"],\n", + " os.environ[\"AIService__AzureSearchOptions__Text2SqlQueryCache__SemanticConfig\"],\n", + " top=1,\n", + " )\n", + "\n", + " # Create important information prompt that contains the SQL database information.\n", + " engine_specific_rules = \"Use TOP X to limit the number of rows returned instead of LIMIT X. NEVER USE LIMIT X as it produces a syntax error.\"\n", + " important_information_prompt = f\"\"\"\n", + " [SQL DATABASE INFORMATION]\n", + " {sql_plugin.system_prompt(engine_specific_rules=engine_specific_rules, query_cache=cached_schemas)}\n", + " [END SQL DATABASE INFORMATION]\n", + " \"\"\"\n", + "\n", + " arguments = KernelArguments()\n", + " arguments[\"chat_history\"] = chat_history\n", + " arguments[\"important_information\"] = important_information_prompt\n", + " arguments[\"user_input\"] = question\n", + "\n", + " logging.info(\"Question: %s\", question)\n", + "\n", + " answer = await kernel.invoke(\n", + " function_name=\"Chat\",\n", + " plugin_name=\"ChatBot\",\n", + " arguments=arguments,\n", + " chat_history=chat_history,\n", + " )\n", + "\n", + " logging.info(\"Answer: %s\", answer)\n", + "\n", + " end_time = time.time()\n", + " logging.info(\"Time taken: %s\", end_time - start_time)\n", + "\n", + " # Log the question and answer to the chat history.\n", + " chat_history.add_user_message(question)\n", + " chat_history.add_message({\"role\": \"assistant\", \"message\": answer})\n", + "\n", + " json_answer = json.loads(str(answer))\n", + "\n", + " display(Markdown(json_answer[\"answer\"]))\n", + "\n", + " queries = [source[\"reference\"] for source in json_answer[\"sources\"]]\n", + "\n", + " for query in queries:\n", + " entry = {\"Question\": question, \"Query\": query, \"Schemas\": json_answer[\"schemas\"]}\n", + " await add_entry_to_index(\n", + " entry,\n", + " {\"Question\": \"QuestionEmbedding\", \"Query\": \"QueryEmbedding\"},\n", + " os.environ[\"AIService__AzureSearchOptions__Text2SqlQueryCache__Index\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-03-15-preview \"HTTP/1.1 200 OK\"\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Request URL: 'https://open-ai-vector-db.search.windows.net/indexes('text-2-sql-query-cache-index')/docs/search.post.search?api-version=REDACTED'\n", + "Request method: 'POST'\n", + "Request headers:\n", + " 'Content-Type': 'application/json'\n", + " 'Content-Length': '34842'\n", + " 'api-key': 'REDACTED'\n", + " 'Accept': 'application/json;odata.metadata=none'\n", + " 'x-ms-client-request-id': '3d608534-7141-11ef-99b1-0242ac110002'\n", + " 'User-Agent': 'azsdk-python-search-documents/11.6.0b4 Python/3.12.3 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36)'\n", + "A body is sent with the request\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 200\n", + "Response headers:\n", + " 'Transfer-Encoding': 'chunked'\n", + " 'Content-Type': 'application/json; odata.metadata=none; odata.streaming=true; charset=utf-8'\n", + " 'Content-Encoding': 'REDACTED'\n", + " 'Vary': 'REDACTED'\n", + " 'Server': 'Microsoft-IIS/10.0'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Preference-Applied': 'REDACTED'\n", + " 'OData-Version': 'REDACTED'\n", + " 'request-id': '3d608534-7141-11ef-99b1-0242ac110002'\n", + " 'elapsed-time': 'REDACTED'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Date': 'Thu, 12 Sep 2024 19:57:29 GMT'\n", + "INFO:root:Results: []\n", + "INFO:root:Question: What are the different product categories we have?\n", + "INFO:semantic_kernel.functions.kernel_function:Function ChatBot-Chat invoking.\n", + "INFO:semantic_kernel.contents.chat_history:Could not parse prompt \n", + "As a senior analyst, your primary responsibility is to provide precise and thorough answers to the user's queries. Utilize all the provided functions to craft your responses. You must deliver detailed and accurate final answers with clear explanations and actionable insights.\n", + "\n", + "Always use the provided functions to obtain key information in order to answer the question.\n", + "If you are asked to use always use a function, you must use that function to compliment the answer.\n", + "Always use multiple functions to formulate the answer.\n", + "Always execute multiple functions in parallel to compliment the results.\n", + "\n", + "The response to the user must meet the requirements in RESPONSE OUTPUT REQUIREMENTS.\n", + "IMPORTANT INFORMATION contains useful information that you can use to aid your knowledge.\n", + "CHAT HISTORY contains the previous question and answer pairs in the conversation in JSON format. Do not use this information to answer the question, but to provide context on what was asked previously.\n", + "\n", + "[IMPORTANT INFORMATION]\n", + "\n", + "\n", + " [SQL DATABASE INFORMATION]\n", + " First look at the cached queries, SQL templates and schemas to see if you can use them to formulate a SQL query. If you can't find a suitable query, use the 'GetEntitySchema()' function to search for the most relevant schemas for the data that you wish to obtain.\n", + "\n", + " [BEGIN QUERY CACHE]\n", + " []\n", + " [END QUERY CACHE]\n", + " \n", + "\n", + " Use the 'RunSQLQuery()' function to run the SQL query against the database.\n", + "\n", + " Output corresponding text values in the answer for columns where there is an ID. For example, if the column is 'ProductID', output the corresponding 'ProductModel' in the response. Do not include the ID in the response.\n", + " If a user is asking for a comparison, always compare the relevant values in the database.\n", + "\n", + " The target database engine is Microsoft TSQL Server, SQL queries must be able compatible to run on Microsoft TSQL Server. \n", + " The following Microsoft TSQL Server Syntax rules must be adhered to.\n", + " Use TOP X to limit the number of rows returned instead of LIMIT X. NEVER USE LIMIT X as it produces a syntax error.\n", + " You must only provide SELECT SQL queries.\n", + " For a given entity, use the 'SelectFromEntity' property returned in the schema in the SELECT FROM part of the SQL query. If the property is {'SelectFromEntity': 'test_schema.test_table'}, the select statement will be formulated from 'SELECT <VALUES> FROM test_schema.test_table WHERE <CONDITION>.\n", + "\n", + " If you don't know how the value is formatted in a column, run a query against the column to get the unique values that might match your query.\n", + " Some columns in the schema may have the properties 'AllowedValues' or 'SampleValues'. Use these values to determine the possible values that can be used in the SQL query.\n", + "\n", + " The source title to cite is the 'EntityName' property. The source reference is the SQL query used. The source chunk is the result of the SQL query used to answer the user query in Markdown table format. e.g. { 'title': "vProductAndDescription", 'chunk': '| ProductID | Name | ProductModel | Culture | Description |\\n|-----------|-------------------|--------------|---------|----------------------------------|\\n| 101 | Mountain Bike | MT-100 | en | A durable bike for mountain use. |\\n| 102 | Road Bike | RB-200 | en | Lightweight bike for road use. |\\n| 103 | Hybrid Bike | HB-300 | fr | V\u00e9lo hybride pour usage mixte. |\\n', 'reference': 'SELECT ProductID, Name, ProductModel, Culture, Description FROM vProductAndDescription WHERE Culture = "en";' }\n", + " [END SQL DATABASE INFORMATION]\n", + " \n", + "\n", + "[END IMPORTANT INFORMATION]\n", + "\n", + "[RESPONSE OUTPUT REQUIREMENTS]\n", + "\n", + " The answer MUST be returned in JSON format as { \"answer\": \"\", \"sources\": [ {\"title\": , \"chunk\": , \"reference\": \"\"}, {\"title\": , \"chunk\": , \"reference\": \"\"} ], \"schemas\": [ ] }.\n", + "\n", + " The 'answer' property MUST meet the requirements in the ANSWER PROPERTY REQUIREMENTS.\n", + " The 'sources' property MUST meet the requirements in the SOURCES PROPERTY REQUIREMENTS.\n", + " The 'schemas' property MUST meet the requirements in the SCHEMAS PROPERTY REQUIREMENTS.\n", + "\n", + " Do NOT return anything outside of the provided JSON property. Ensure that this is valid JSON returned.\n", + "\n", + " Never return an empty response or null value. Always answer the question.\n", + "\n", + " [ANSWER PROPERTY REQUIREMENTS]\n", + " 1. Language and Tone:\n", + " Use only British English throughout the response.\n", + " Employ a business-friendly language that is professional and easy to understand.\n", + "\n", + " 2. Content Restrictions:\n", + " Do not use any profanity, offensive language, hate speech, or code in the response.\n", + " If you encounter any such content, handle it gracefully by omitting or rephrasing it appropriately.\n", + "\n", + " 3. Information Sources:\n", + " Use only information from the provided functions and specified important information.\n", + " Do not use any external sources or the chat history for constructing the response.\n", + " In case of conflicting information, prioritize data from the SQL Database as the primary source of truth.\n", + "\n", + " 4. Calculations:\n", + " For any required calculations, use only the values provided in the context.\n", + " Provide a brief, clear explanation of the calculations beneath the results.\n", + "\n", + " 5. Response Structure:\n", + " Ensure the response is direct, easy to understand, and well-structured.\n", + " Format the response using Markdown for clarity and readability.\n", + " Use bold sub-headings for clarity where needed. Only use Markdown headings Level 3 (###) and Level 4 (####).\n", + " Use bullet points or numbered lists when appropriate.\n", + " Do not vary the font size within the same sentence.\n", + "\n", + " 6. Citations:\n", + " All factual information used in the answer must be cited with numbered references. For example, [1] should be used to refer to the first source.\n", + " Each citation in the answer must correspond to a single entry in the 'sources' object.\n", + " The same citation and corresponding context chunk may be used multiple times if needed.\n", + " Place the numbered citation at the end of each relevant sentence that uses information from the sources.\n", + " Ensure that each source listed in the 'sources' property is cited at least once in the answer.\n", + " Do not provide a list of definitions from the business glossary; use such information only to enhance the answer contextually.\n", + "\n", + " 7. Citations Format:\n", + " Citations should be embedded within the text, not as a separate list at the end of the 'answer' property.\n", + " [END ANSWER PROPERTY REQUIREMENTS]\n", + "\n", + " [SCHEMAS PROPERTY REQUIREMENTS]\n", + " 1. Inclusion Criteria:\n", + " If you used a schema obtained from 'GetEntitySchemas' function, it must be returned in the 'schemas' property. The 'schemas' property should contain a list of all the schemas used to create the SQL query.\n", + "\n", + " 3. Schema Format:\n", + " Each schema entry should be formatted as: {\"Entity\": \"\", \"Columns\", [ {\"Name\": \"\", \"Definition\": , \"Type\": \"\" } ]}. This is the same format as the 'GetEntitySchemas' function output. Simply copy the schema from the function output to the 'schemas' property and remove the not needed properties.\n", + "\n", + " [END SCHEMAS PROPERTY REQUIREMENTS]\n", + "\n", + " [SOURCES PROPERTY REQUIREMENTS]\n", + " 1. Reference Inclusion:\n", + " Include all corresponding references for all cited content in the 'answer' property.\n", + " Place the references in the 'sources' property.\n", + "\n", + " 2. Source Format:\n", + " Each entry in the 'sources' property must be formatted as: {\"title\": \"\", \"chunk\": \"\", \"reference\": \"\"}\n", + " For example, a complete response with two citations would be formatted as: { \"answer\": \"\", \"sources\": [ {\"title\": , \"chunk\": , \"reference\": \"\"}, {\"title\": , \"chunk\": , \"reference\": \"\"} ] }\n", + "\n", + " 3. Source Chunk:\n", + " The 'chunk' property should contain a concise, unedited snippet of the relevant context that supports the answer.\n", + "\n", + " 4. Mandatory References:\n", + " Ensure that every citation in the 'answer' has a corresponding entry in the 'sources' property.\n", + " Every entry in the 'sources' property must be cited at least once in the answer.\n", + " [END SOURCES PROPERTY REQUIREMENTS]\n", + "\n", + "[END RESPONSE OUTPUT REQUIREMENTS]\n", + "\n", + "\n", + "What are the different product categories we have? as xml, treating as text, error was: not well-formed (invalid token): line 46, column 78\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-02-01 \"HTTP/1.1 200 OK\"\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_handler:OpenAI usage: CompletionUsage(completion_tokens=51, prompt_tokens=1988, total_tokens=2039)\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion_base:processing 2 tool calls in parallel.\n", + "INFO:semantic_kernel.kernel:Calling SQL-GetEntitySchema function with args: {\"text\": \"Product Category\"}\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-GetEntitySchema invoking.\n", + "INFO:semantic_kernel.kernel:Calling SQL-GetEntitySchema function with args: {\"text\": \"Product\"}\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-GetEntitySchema invoking.\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-03-15-preview \"HTTP/1.1 200 OK\"\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Request URL: 'https://open-ai-vector-db.search.windows.net/indexes('text-2-sql-index')/docs/search.post.search?api-version=REDACTED'\n", + "Request method: 'POST'\n", + "Request headers:\n", + " 'Content-Type': 'application/json'\n", + " 'Content-Length': '34721'\n", + " 'api-key': 'REDACTED'\n", + " 'Accept': 'application/json;odata.metadata=none'\n", + " 'x-ms-client-request-id': '3e13c694-7141-11ef-99b1-0242ac110002'\n", + " 'User-Agent': 'azsdk-python-search-documents/11.6.0b4 Python/3.12.3 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36)'\n", + "A body is sent with the request\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-03-15-preview \"HTTP/1.1 200 OK\"\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Request URL: 'https://open-ai-vector-db.search.windows.net/indexes('text-2-sql-index')/docs/search.post.search?api-version=REDACTED'\n", + "Request method: 'POST'\n", + "Request headers:\n", + " 'Content-Type': 'application/json'\n", + " 'Content-Length': '34765'\n", + " 'api-key': 'REDACTED'\n", + " 'Accept': 'application/json;odata.metadata=none'\n", + " 'x-ms-client-request-id': '3e183d3c-7141-11ef-99b1-0242ac110002'\n", + " 'User-Agent': 'azsdk-python-search-documents/11.6.0b4 Python/3.12.3 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36)'\n", + "A body is sent with the request\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 200\n", + "Response headers:\n", + " 'Transfer-Encoding': 'chunked'\n", + " 'Content-Type': 'application/json; odata.metadata=none; odata.streaming=true; charset=utf-8'\n", + " 'Content-Encoding': 'REDACTED'\n", + " 'Vary': 'REDACTED'\n", + " 'Server': 'Microsoft-IIS/10.0'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Preference-Applied': 'REDACTED'\n", + " 'OData-Version': 'REDACTED'\n", + " 'request-id': '3e183d3c-7141-11ef-99b1-0242ac110002'\n", + " 'elapsed-time': 'REDACTED'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Date': 'Thu, 12 Sep 2024 19:57:30 GMT'\n", + "INFO:root:Results: [{'Description': 'This view provides a comprehensive list of all product categories and their corresponding subcategories in the SalesLT schema of the AdventureWorksLT database. It is used to understand the hierarchical structure of product categories, facilitating product organization and categorization.', 'Entity': 'vGetAllCategories', 'EntityName': 'Get All Categories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.03333333507180214, '@search.reranker_score': 2.6649816036224365, '@search.highlights': None, '@search.captions': None}, {'Description': 'This view provides detailed catalog information about product models, including descriptions, manufacturing details, warranty information, and specifications related to product design and features. It is useful for generating comprehensive product catalogs and providing detailed product information to customers.', 'Entity': 'vProductModelCatalogDescription', 'EntityName': 'Product Model Catalog Description', 'Columns': [{'Name': 'ProductModelID', 'Definition': 'A unique identifier for each product model. This ID is used to distinguish different product models.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Name', 'Definition': 'The name of the product model, providing a recognizable title for each model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Summary', 'Definition': 'A brief summary of the product model, highlighting key features and characteristics.', 'Type': 'NVARCHAR(MAX)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Manufacturer', 'Definition': 'The name of the manufacturer of the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Copyright', 'Definition': 'Copyright information related to the product model, indicating the legal ownership of the product design and content.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductURL', 'Definition': 'The URL for the product model, providing a link to more information or to purchase the product.', 'Type': 'NVARCHAR(256)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'WarrantyPeriod', 'Definition': 'The duration of the warranty period for the product model, specifying how long the warranty is valid.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'WarrantyDescription', 'Definition': 'A description of the warranty provided for the product model, detailing what is covered under the warranty.', 'Type': 'NVARCHAR(255)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'NoOfYears', 'Definition': 'The number of years the warranty is valid for the product model.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'MaintenanceDescription', 'Definition': 'A description of the maintenance requirements and recommendations for the product model.', 'Type': 'NVARCHAR(MAX)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Wheel', 'Definition': 'Details about the type of wheels used in the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Saddle', 'Definition': 'Information about the saddle of the product model, such as material and design.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Pedal', 'Definition': 'Details regarding the pedal design and specifications of the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'BikeFrame', 'Definition': 'Description of the bike frame used in the product model, including material and type.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Crankset', 'Definition': 'Information about the crankset of the product model, specifying its design and features.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PictureAngle', 'Definition': 'The angle at which the product model is photographed, providing a visual perspective of the product.', 'Type': 'NVARCHAR(20)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PictureSize', 'Definition': \"The size of the product model's picture, specifying dimensions or resolution.\", 'Type': 'NVARCHAR(20)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductPhotoID', 'Definition': 'An identifier linking to the product photo, which provides a visual representation of the product model.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Material', 'Definition': 'The material used in the construction of the product model, indicating durability and quality.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Color', 'Definition': 'The color of the product model, providing information about the appearance of the product.', 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductLine', 'Definition': 'A code representing the product line to which the model belongs, categorizing the product within a broader product range.', 'Type': 'NVARCHAR(2)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Style', 'Definition': 'The style of the product model, indicating design and aesthetic aspects.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'RiderExperience', 'Definition': \"A description of the target rider's experience level for which the product model is designed, such as beginner, intermediate, or expert.\", 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the product model information was last modified, indicating the currency of the data.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.032786883413791656, '@search.reranker_score': 2.0436108112335205, '@search.highlights': None, '@search.captions': None}, {'Description': 'This view provides detailed information about products, including their names, associated product models, descriptions, and the specific culture or language of the description. It is useful for understanding product details and translating product descriptions for different cultures.', 'Entity': 'vProductAndDescription', 'EntityName': 'Product and Description', 'Columns': [{'Name': 'ProductID', 'Definition': 'A unique identifier for each product. This ID is used to distinguish individual products.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Name', 'Definition': 'The name of the product. This provides a brief and identifiable name for each product.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductModel', 'Definition': 'The model name associated with the product. This indicates the specific model type or version of the product.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Culture', 'Definition': \"The culture or language code for the product description. This is used to localize the product description, such as 'en' for English or 'fr' for French.\", 'Type': 'NVARCHAR(6)', 'AllowedValues': None, 'SampleValues': '[\"en\",\"fr\",\"es\",\"de\"]'}, {'Name': 'Description', 'Definition': 'A detailed description of the product. This text provides additional information about the product, which can vary based on the culture or language.', 'Type': 'NVARCHAR(400)', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.032258063554763794, '@search.reranker_score': 2.016369342803955, '@search.highlights': None, '@search.captions': None}, {'Description': 'This table contains high-level information about sales orders, including order dates, customer details, shipping information, and order status. It is used to manage and track sales orders from initiation to fulfillment.', 'Entity': 'SalesOrderHeader', 'EntityName': 'Sales Order Header', 'Columns': [{'Name': 'SalesOrderID', 'Definition': 'A unique identifier for each sales order. This ID is auto-generated and serves as the primary key for the SalesOrderHeader table.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'OrderDate', 'Definition': 'The date and time when the sales order was created. This field is used to track when the order was initiated.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'DueDate', 'Definition': 'The date by which the order is expected to be fulfilled or delivered. It helps in managing delivery timelines.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipDate', 'Definition': 'The date when the order was shipped to the customer. This is used for tracking shipping and fulfillment status.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Status', 'Definition': 'The current status of the order, represented as a numeric code (e.g., 1 for In Progress, 2 for Completed, 3 for Canceled).', 'Type': 'TINYINT', 'AllowedValues': '[1,2,3]', 'SampleValues': None}, {'Name': 'OnlineOrderFlag', 'Definition': 'Indicates whether the order was placed online.', 'Type': 'BIT', 'AllowedValues': '[\"True\",\"False\"]', 'SampleValues': None}, {'Name': 'SalesOrderNumber', 'Definition': 'A unique order number assigned to the sales order. This is used for tracking and identification purposes.', 'Type': 'NVARCHAR(25)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PurchaseOrderNumber', 'Definition': \"The purchase order number provided by the customer. This field links the sales order to the customer's purchase order.\", 'Type': 'NVARCHAR(25)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'AccountNumber', 'Definition': \"The account number of the customer placing the order. This helps link the order to the customer's account.\", 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'CustomerID', 'Definition': 'A foreign key that links to the Customer table, representing the customer who placed the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipToAddressID', 'Definition': 'A foreign key that links to the Address table, representing the shipping address for the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'BillToAddressID', 'Definition': 'A foreign key that links to the Address table, representing the billing address for the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipMethod', 'Definition': 'The shipping method used for the order (e.g., UPS, FedEx). This field helps track shipping preferences.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'SubTotal', 'Definition': 'The total cost of the order before taxes and shipping charges. This field is used to calculate the final total. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'TaxAmt', 'Definition': 'The tax amount applied to the order. This is calculated based on the order subtotal and applicable tax rates. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Freight', 'Definition': 'The shipping charge applied to the order. This field represents the cost of shipping the order to the customer. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'TotalDue', 'Definition': 'The total amount due for the order, including all line items, taxes, and shipping charges. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Comment', 'Definition': 'Any additional comments or notes related to the sales order. This field can include special instructions or remarks.', 'Type': 'NVARCHAR(255)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the sales order header record was last modified. This is used for tracking updates and changes to the order.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.01587301678955555, '@search.reranker_score': 1.3785998821258545, '@search.highlights': None, '@search.captions': None}, {'Description': 'This table stores address information for customers, including street addresses, city, state, postal code, and country/region. It is used to maintain contact and shipping information for orders, as well as to manage customer locations.', 'Entity': 'Address', 'EntityName': 'Address', 'Columns': [{'Name': 'AddressID', 'Definition': 'A unique identifier for each address. This ID is auto-generated and serves as the primary key for the Address table.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'City', 'Definition': 'The city in which the address is located. This is used to specify the city for the address.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'StateProvince', 'Definition': 'The state or province in which the address is located. This is used to specify the state or province for the address.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'CountryRegion', 'Definition': 'The country or region in which the address is located. This is used to specify the country or region for the address.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PostalCode', 'Definition': 'The postal code associated with the address. This is used to specify the postal code for the address, which helps in geographical sorting and shipping.', 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the address record was last modified. This is used for tracking updates and changes to the address information.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.015625, '@search.reranker_score': 0.9937192797660828, '@search.highlights': None, '@search.captions': None}]\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-GetEntitySchema succeeded.\n", + "INFO:semantic_kernel.functions.kernel_function:Function completed. Duration: 0.452403s\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 200\n", + "Response headers:\n", + " 'Transfer-Encoding': 'chunked'\n", + " 'Content-Type': 'application/json; odata.metadata=none; odata.streaming=true; charset=utf-8'\n", + " 'Content-Encoding': 'REDACTED'\n", + " 'Vary': 'REDACTED'\n", + " 'Server': 'Microsoft-IIS/10.0'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Preference-Applied': 'REDACTED'\n", + " 'OData-Version': 'REDACTED'\n", + " 'request-id': '3e13c694-7141-11ef-99b1-0242ac110002'\n", + " 'elapsed-time': 'REDACTED'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Date': 'Thu, 12 Sep 2024 19:57:30 GMT'\n", + "INFO:root:Results: [{'Description': 'This view provides detailed information about products, including their names, associated product models, descriptions, and the specific culture or language of the description. It is useful for understanding product details and translating product descriptions for different cultures.', 'Entity': 'vProductAndDescription', 'EntityName': 'Product and Description', 'Columns': [{'Name': 'ProductID', 'Definition': 'A unique identifier for each product. This ID is used to distinguish individual products.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Name', 'Definition': 'The name of the product. This provides a brief and identifiable name for each product.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductModel', 'Definition': 'The model name associated with the product. This indicates the specific model type or version of the product.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Culture', 'Definition': \"The culture or language code for the product description. This is used to localize the product description, such as 'en' for English or 'fr' for French.\", 'Type': 'NVARCHAR(6)', 'AllowedValues': None, 'SampleValues': '[\"en\",\"fr\",\"es\",\"de\"]'}, {'Name': 'Description', 'Definition': 'A detailed description of the product. This text provides additional information about the product, which can vary based on the culture or language.', 'Type': 'NVARCHAR(400)', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.03279569745063782, '@search.reranker_score': 2.4336702823638916, '@search.highlights': None, '@search.captions': None}, {'Description': 'This view provides detailed catalog information about product models, including descriptions, manufacturing details, warranty information, and specifications related to product design and features. It is useful for generating comprehensive product catalogs and providing detailed product information to customers.', 'Entity': 'vProductModelCatalogDescription', 'EntityName': 'Product Model Catalog Description', 'Columns': [{'Name': 'ProductModelID', 'Definition': 'A unique identifier for each product model. This ID is used to distinguish different product models.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Name', 'Definition': 'The name of the product model, providing a recognizable title for each model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Summary', 'Definition': 'A brief summary of the product model, highlighting key features and characteristics.', 'Type': 'NVARCHAR(MAX)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Manufacturer', 'Definition': 'The name of the manufacturer of the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Copyright', 'Definition': 'Copyright information related to the product model, indicating the legal ownership of the product design and content.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductURL', 'Definition': 'The URL for the product model, providing a link to more information or to purchase the product.', 'Type': 'NVARCHAR(256)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'WarrantyPeriod', 'Definition': 'The duration of the warranty period for the product model, specifying how long the warranty is valid.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'WarrantyDescription', 'Definition': 'A description of the warranty provided for the product model, detailing what is covered under the warranty.', 'Type': 'NVARCHAR(255)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'NoOfYears', 'Definition': 'The number of years the warranty is valid for the product model.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'MaintenanceDescription', 'Definition': 'A description of the maintenance requirements and recommendations for the product model.', 'Type': 'NVARCHAR(MAX)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Wheel', 'Definition': 'Details about the type of wheels used in the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Saddle', 'Definition': 'Information about the saddle of the product model, such as material and design.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Pedal', 'Definition': 'Details regarding the pedal design and specifications of the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'BikeFrame', 'Definition': 'Description of the bike frame used in the product model, including material and type.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Crankset', 'Definition': 'Information about the crankset of the product model, specifying its design and features.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PictureAngle', 'Definition': 'The angle at which the product model is photographed, providing a visual perspective of the product.', 'Type': 'NVARCHAR(20)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PictureSize', 'Definition': \"The size of the product model's picture, specifying dimensions or resolution.\", 'Type': 'NVARCHAR(20)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductPhotoID', 'Definition': 'An identifier linking to the product photo, which provides a visual representation of the product model.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Material', 'Definition': 'The material used in the construction of the product model, indicating durability and quality.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Color', 'Definition': 'The color of the product model, providing information about the appearance of the product.', 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductLine', 'Definition': 'A code representing the product line to which the model belongs, categorizing the product within a broader product range.', 'Type': 'NVARCHAR(2)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Style', 'Definition': 'The style of the product model, indicating design and aesthetic aspects.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'RiderExperience', 'Definition': \"A description of the target rider's experience level for which the product model is designed, such as beginner, intermediate, or expert.\", 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the product model information was last modified, indicating the currency of the data.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.032786883413791656, '@search.reranker_score': 2.3879058361053467, '@search.highlights': None, '@search.captions': None}, {'Description': 'This view provides a comprehensive list of all product categories and their corresponding subcategories in the SalesLT schema of the AdventureWorksLT database. It is used to understand the hierarchical structure of product categories, facilitating product organization and categorization.', 'Entity': 'vGetAllCategories', 'EntityName': 'Get All Categories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.03279569745063782, '@search.reranker_score': 2.2206456661224365, '@search.highlights': None, '@search.captions': None}, {'Description': 'This table stores detailed information about sales order tickets, including the order details, customer information, order status, and timestamps. It is used to manage and track sales orders throughout the order lifecycle, from creation to fulfillment.', 'Entity': 'SalesOrderDetail', 'EntityName': 'Sales Order Detail', 'Columns': [{'Name': 'SalesOrderID', 'Definition': 'A unique identifier for each sales order ticket. This ID is auto-generated and serves as the primary key for the SalesOrderTicket table.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'OrderDate', 'Definition': 'The date and time when the sales order was created. This is used to track when the order was initiated.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'DueDate', 'Definition': 'The date by which the order is expected to be fulfilled or delivered. It helps in managing delivery timelines.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipDate', 'Definition': 'The date when the order was shipped to the customer. This is used for tracking shipping and fulfillment status.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Status', 'Definition': 'The current status of the order, represented as a numeric code (e.g., 1 for In Progress, 2 for Completed, 3 for Canceled).', 'Type': 'TINYINT', 'AllowedValues': '[1,2,3]', 'SampleValues': None}, {'Name': 'TotalDue', 'Definition': 'The total amount due for the order, including all line items, taxes, and shipping charges.', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the sales order ticket record was last modified. This is used for tracking updates and changes to the order.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.015625, '@search.reranker_score': 1.8869867324829102, '@search.highlights': None, '@search.captions': None}, {'Description': 'This table contains high-level information about sales orders, including order dates, customer details, shipping information, and order status. It is used to manage and track sales orders from initiation to fulfillment.', 'Entity': 'SalesOrderHeader', 'EntityName': 'Sales Order Header', 'Columns': [{'Name': 'SalesOrderID', 'Definition': 'A unique identifier for each sales order. This ID is auto-generated and serves as the primary key for the SalesOrderHeader table.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'OrderDate', 'Definition': 'The date and time when the sales order was created. This field is used to track when the order was initiated.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'DueDate', 'Definition': 'The date by which the order is expected to be fulfilled or delivered. It helps in managing delivery timelines.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipDate', 'Definition': 'The date when the order was shipped to the customer. This is used for tracking shipping and fulfillment status.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Status', 'Definition': 'The current status of the order, represented as a numeric code (e.g., 1 for In Progress, 2 for Completed, 3 for Canceled).', 'Type': 'TINYINT', 'AllowedValues': '[1,2,3]', 'SampleValues': None}, {'Name': 'OnlineOrderFlag', 'Definition': 'Indicates whether the order was placed online.', 'Type': 'BIT', 'AllowedValues': '[\"True\",\"False\"]', 'SampleValues': None}, {'Name': 'SalesOrderNumber', 'Definition': 'A unique order number assigned to the sales order. This is used for tracking and identification purposes.', 'Type': 'NVARCHAR(25)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PurchaseOrderNumber', 'Definition': \"The purchase order number provided by the customer. This field links the sales order to the customer's purchase order.\", 'Type': 'NVARCHAR(25)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'AccountNumber', 'Definition': \"The account number of the customer placing the order. This helps link the order to the customer's account.\", 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'CustomerID', 'Definition': 'A foreign key that links to the Customer table, representing the customer who placed the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipToAddressID', 'Definition': 'A foreign key that links to the Address table, representing the shipping address for the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'BillToAddressID', 'Definition': 'A foreign key that links to the Address table, representing the billing address for the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipMethod', 'Definition': 'The shipping method used for the order (e.g., UPS, FedEx). This field helps track shipping preferences.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'SubTotal', 'Definition': 'The total cost of the order before taxes and shipping charges. This field is used to calculate the final total. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'TaxAmt', 'Definition': 'The tax amount applied to the order. This is calculated based on the order subtotal and applicable tax rates. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Freight', 'Definition': 'The shipping charge applied to the order. This field represents the cost of shipping the order to the customer. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'TotalDue', 'Definition': 'The total amount due for the order, including all line items, taxes, and shipping charges. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Comment', 'Definition': 'Any additional comments or notes related to the sales order. This field can include special instructions or remarks.', 'Type': 'NVARCHAR(255)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the sales order header record was last modified. This is used for tracking updates and changes to the order.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.01587301678955555, '@search.reranker_score': 1.8796147108078003, '@search.highlights': None, '@search.captions': None}]\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-GetEntitySchema succeeded.\n", + "INFO:semantic_kernel.functions.kernel_function:Function completed. Duration: 0.446188s\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-02-01 \"HTTP/1.1 200 OK\"\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_handler:OpenAI usage: CompletionUsage(completion_tokens=30, prompt_tokens=9242, total_tokens=9272)\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion_base:processing 1 tool calls in parallel.\n", + "INFO:semantic_kernel.kernel:Calling SQL-RunSQLQuery function with args: {\"sql_query\":\"SELECT DISTINCT ProductCategoryName FROM SalesLT.vGetAllCategories;\"}\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-RunSQLQuery invoking.\n", + "INFO:root:Executing SQL Query\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-RunSQLQuery succeeded.\n", + "INFO:semantic_kernel.functions.kernel_function:Function completed. Duration: 0.339113s\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-02-01 \"HTTP/1.1 200 OK\"\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_handler:OpenAI usage: CompletionUsage(completion_tokens=627, prompt_tokens=9632, total_tokens=10259)\n", + "INFO:semantic_kernel.functions.kernel_function:Function ChatBot-Chat succeeded.\n", + "INFO:semantic_kernel.functions.kernel_function:Function completed. Duration: 8.669984s\n", + "INFO:root:Answer: {\n", + " \"answer\": \"The different product categories we have are as follows:\\n\\n- Bib-Shorts\\n- Bike Racks\\n- Bike Stands\\n- Bottles and Cages\\n- Bottom Brackets\\n- Brakes\\n- Caps\\n- Chains\\n- Cleaners\\n- Cranksets\\n- Derailleurs\\n- Fenders\\n- Forks\\n- Gloves\\n- Handlebars\\n- Headsets\\n- Helmets\\n- Hydration Packs\\n- Jerseys\\n- Lights\\n- Locks\\n- Mountain Bikes\\n- Mountain Frames\\n- Panniers\\n- Pedals\\n- Pumps\\n- Road Bikes\\n- Road Frames\\n- Saddles\\n- Shorts\\n- Socks\\n- Tights\\n- Tires and Tubes\\n- Touring Bikes\\n- Touring Frames\\n- Vests\\n- Wheels\",\n", + " \"sources\": [\n", + " {\n", + " \"title\": \"Get All Categories\",\n", + " \"chunk\": \"| ProductCategoryName |\\n|----------------------------|\\n| Bib-Shorts |\\n| Bike Racks |\\n| Bike Stands |\\n| Bottles and Cages |\\n| Bottom Brackets |\\n| Brakes |\\n| Caps |\\n| Chains |\\n| Cleaners |\\n| Cranksets |\\n| Derailleurs |\\n| Fenders |\\n| Forks |\\n| Gloves |\\n| Handlebars |\\n| Headsets |\\n| Helmets |\\n| Hydration Packs |\\n| Jerseys |\\n| Lights |\\n| Locks |\\n| Mountain Bikes |\\n| Mountain Frames |\\n| Panniers |\\n| Pedals |\\n| Pumps |\\n| Road Bikes |\\n| Road Frames |\\n| Saddles |\\n| Shorts |\\n| Socks |\\n| Tights |\\n| Tires and Tubes |\\n| Touring Bikes |\\n| Touring Frames |\\n| Vests |\\n| Wheels |\\n\",\n", + " \"reference\": \"SELECT DISTINCT ProductCategoryName FROM SalesLT.vGetAllCategories;\"\n", + " }\n", + " ],\n", + " \"schemas\": [\n", + " {\n", + " \"Entity\": \"vGetAllCategories\",\n", + " \"Columns\": [\n", + " {\n", + " \"Name\": \"ProductCategoryID\",\n", + " \"Definition\": \"A unique identifier for each product category. This ID is used to reference specific categories.\",\n", + " \"Type\": \"INT\"\n", + " },\n", + " {\n", + " \"Name\": \"ParentProductCategoryName\",\n", + " \"Definition\": \"The name of the parent product category. This represents the top-level category under which subcategories are grouped.\",\n", + " \"Type\": \"NVARCHAR(50)\"\n", + " },\n", + " {\n", + " \"Name\": \"ProductCategoryName\",\n", + " \"Definition\": \"The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.\",\n", + " \"Type\": \"NVARCHAR(50)\"\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + "}\n", + "INFO:root:Time taken: 9.309687852859497\n" + ] + }, + { + "data": { + "text/markdown": [ + "The different product categories we have are as follows:\n", + "\n", + "- Bib-Shorts\n", + "- Bike Racks\n", + "- Bike Stands\n", + "- Bottles and Cages\n", + "- Bottom Brackets\n", + "- Brakes\n", + "- Caps\n", + "- Chains\n", + "- Cleaners\n", + "- Cranksets\n", + "- Derailleurs\n", + "- Fenders\n", + "- Forks\n", + "- Gloves\n", + "- Handlebars\n", + "- Headsets\n", + "- Helmets\n", + "- Hydration Packs\n", + "- Jerseys\n", + "- Lights\n", + "- Locks\n", + "- Mountain Bikes\n", + "- Mountain Frames\n", + "- Panniers\n", + "- Pedals\n", + "- Pumps\n", + "- Road Bikes\n", + "- Road Frames\n", + "- Saddles\n", + "- Shorts\n", + "- Socks\n", + "- Tights\n", + "- Tires and Tubes\n", + "- Touring Bikes\n", + "- Touring Frames\n", + "- Vests\n", + "- Wheels" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Document: {'Question': 'What are the different product categories we have?', 'Query': 'SELECT DISTINCT ProductCategoryName FROM SalesLT.vGetAllCategories;', 'Schemas': [{'Entity': 'vGetAllCategories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT'}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)'}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)'}]}]}\n", + "INFO:root:Vector Fields: {'Question': 'QuestionEmbedding', 'Query': 'QueryEmbedding'}\n", + "INFO:root:Vector Fields: {'Question': 'QuestionEmbedding', 'Query': 'QueryEmbedding'}\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-03-15-preview \"HTTP/1.1 200 OK\"\n", + "INFO:root:Document with embeddings: {'Question': 'What are the different product categories we have?', 'Query': 'SELECT DISTINCT ProductCategoryName FROM SalesLT.vGetAllCategories;', 'Schemas': [{'Entity': 'vGetAllCategories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT'}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)'}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)'}]}], 'QuestionEmbedding': [0.013793433085083961, 0.003165433183312416, -0.006151125766336918, -0.013820061460137367, -0.017734413966536522, 0.005801629740744829, -0.01408634427934885, 0.009007005952298641, -0.010531472973525524, -0.011536689475178719, 0.010578072629868984, 0.014725422486662865, -0.03352496773004532, 0.00788196176290512, -0.0035349002573639154, 0.022607384249567986, 0.017201850190758705, 0.019811417907476425, -0.005944756790995598, -0.029850268736481667, -0.029477473348379135, 0.0012506955536082387, 0.009998908266425133, -0.012015997432172298, -0.007535794749855995, 0.016922252252697945, 0.016562771052122116, -0.019132398068904877, -0.006284267175942659, 0.0016634335042908788, 0.008574296720325947, -0.0015793880447745323, -0.01708202250301838, -0.01818709447979927, -0.01772109977900982, 0.019212283194065094, -0.001542774261906743, 0.006943316198885441, 0.001790749840438366, -0.0023299718741327524, 0.013846689835190773, 0.013334096409380436, 0.008108302019536495, 0.010731184855103493, 0.003544885665178299, 0.0042971340008080006, -0.030808884650468826, 0.002839237218722701, -0.006104526109993458, 0.0036780270747840405, 0.013400666415691376, 0.008427840657532215, -0.015151474624872208, -0.02396542578935623, 0.018493318930268288, 0.02803954668343067, 0.015497641637921333, 0.011723087169229984, 0.003997566178441048, -0.015697352588176727, -0.0014437504578381777, 0.03722629323601723, -0.02606905624270439, 0.009879080578684807, -0.026774704456329346, -0.01672254130244255, -0.011203835718333721, 0.0013031199341639876, -0.008434497751295567, -0.010771127417683601, 0.011576632037758827, 0.027746636420488358, -0.011370263062417507, 0.007848676294088364, 0.004380347207188606, -0.009013663046061993, -0.002929107518866658, -0.01951850764453411, -0.0014745392836630344, 0.008774008601903915, 0.016775798052549362, -0.005561975762248039, -0.012282280251383781, -0.004969497211277485, 0.02377902716398239, -0.012042625807225704, -6.022561137797311e-05, 0.03703989461064339, 0.004906254820525646, -0.011763029731810093, 0.012928015552461147, 0.015617468394339085, 0.031900644302368164, -0.0023166576866060495, -0.004816384520381689, 0.020876547321677208, 0.0014079686952754855, 0.003741268999874592, -0.02010432817041874, 0.0026411896105855703, -0.005495405290275812, -0.004773113876581192, -0.006201053503900766, -0.019451936706900597, -0.004416960757225752, 0.008833921514451504, 0.012135825119912624, -0.014019773341715336, 0.016735855489969254, -0.014472453854978085, -0.021355856209993362, 0.020783349871635437, 0.033604852855205536, -0.024351535364985466, 0.015244673006236553, -0.005468776915222406, 0.01630980335175991, 0.0074758813716471195, -0.007276169490069151, -0.012462020851671696, 0.004889612551778555, 0.018440062180161476, 0.03751920536160469, -0.02025078423321247, 0.0185465756803751, -0.016682598739862442, -0.014712108299136162, -0.01722847856581211, 0.022181332111358643, -0.018266979604959488, 0.004137364216148853, -0.0024448062758892775, 0.01491182018071413, 0.00916011817753315, -0.00952625647187233, 0.017161907628178596, -0.02761349454522133, 0.03445695713162422, 0.009253316558897495, -0.008780665695667267, 0.014725422486662865, 0.017761042341589928, 0.0035914850886911154, 0.022367730736732483, 0.0174015611410141, 0.01133697759360075, 0.027320584282279015, 0.018067266792058945, 0.0031487904489040375, 0.016908938065171242, 0.007229569833725691, 0.009093547239899635, 0.027693379670381546, -0.008261414244771004, 0.011097323149442673, -0.01314769871532917, -0.0010734513634815812, 0.0027992946561425924, -0.027906406670808792, -0.004393661394715309, 0.0162565466016531, 0.006903373636305332, -0.002210144652053714, 0.011796314269304276, 0.026228826493024826, 0.024018680676817894, 0.03432381525635719, 0.003102191025391221, 0.0029923496767878532, 0.001207424676977098, -0.0035215860698372126, -0.0046632722951471806, -0.006134483031928539, 0.012415421195328236, -0.004450246226042509, 0.01021193340420723, 0.0004385339852888137, 0.002785980701446533, -0.023712456226348877, -0.008367927744984627, 0.015737295150756836, -0.016509514302015305, 0.005345621146261692, -0.0046998863108456135, -0.014765364117920399, -0.016616027802228928, -0.003033956279978156, -0.010804411955177784, 0.025403350591659546, -0.022594070062041283, -0.01243539247661829, 0.03123493678867817, -0.0015369493048638105, 0.0015228030970320106, -0.6731621623039246, -0.025802774354815483, 0.019438622519373894, -0.029690498486161232, 0.026668192818760872, 0.009925680235028267, 0.017428189516067505, 0.025483235716819763, -0.011516718193888664, 0.027693379670381546, 0.01959839276969433, 0.008980377577245235, 0.021595509722828865, 0.004263848531991243, -0.007648964878171682, -0.03064911626279354, 0.018985942006111145, -0.0012565205106511712, -0.006037955638021231, 0.018892742693424225, 0.0017424861434847116, 0.0007747156196273863, -0.022194646298885345, -0.0174015611410141, 0.02254081331193447, 0.015244673006236553, 0.006683690939098597, 0.0008978712721727788, -0.008001789450645447, 0.026867903769016266, -0.01108400896191597, 0.025216951966285706, 0.022500870749354362, -0.011310349218547344, 0.041753094643354416, 0.015684038400650024, -0.004350390285253525, 0.03091539815068245, 0.00993899442255497, 0.0258826594799757, -0.04737165570259094, -0.011456804350018501, 0.015471013262867928, -0.014765364117920399, -0.006473993416875601, 0.025589747354388237, 0.025390036404132843, 0.00019149456056766212, 0.0014154579257592559, 0.0017558002145960927, 0.014938448555767536, -0.01882617175579071, -0.012355508282780647, -0.0005475434008985758, 0.028865022584795952, 0.0027210742700845003, 0.026761390268802643, -0.003844453487545252, 0.005981370806694031, 0.037758857011795044, -0.004070793744176626, 0.011123951524496078, -0.011763029731810093, -0.014845249243080616, -0.0272540133446455, -0.009759253822267056, -0.033551596105098724, -0.008740723133087158, 0.010518158785998821, -0.003425058675929904, -0.018772916868329048, 0.0011583288433030248, -0.02605574205517769, -0.004929554648697376, -0.007722192443907261, 0.017215164378285408, 0.024338221177458763, 0.021355856209993362, -0.014192856848239899, -0.006097869016230106, -0.0014246113132685423, -0.0012531919637694955, 0.01170311588793993, -0.0005076010129414499, 0.00782870501279831, -0.002814273117110133, -0.010385017842054367, 0.005059367511421442, 0.018306922167539597, 0.028225945308804512, 0.002541333669796586, 0.022008247673511505, 0.009599484503269196, -0.0206102654337883, -0.022061504423618317, 0.0026478467043489218, -0.0174015611410141, 0.008234785869717598, -0.017561331391334534, -0.011416861787438393, 0.007735506631433964, 0.01383337564766407, -0.005092652980238199, 0.014858563430607319, 0.0050660246051847935, 0.01202265452593565, -0.002531348029151559, 0.011004123836755753, 0.01005216408520937, -0.027453726157546043, 0.008640866726636887, -0.01305449940264225, -0.005954742431640625, -0.008327985182404518, -0.021089574322104454, -0.026002485305070877, 0.03110179677605629, -0.01593700796365738, -0.02194167859852314, -0.0015252993907779455, 0.0040907650254666805, 0.010504844598472118, 0.015178102068603039, -0.009599484503269196, 0.008620895445346832, 0.016962194815278053, -0.017374932765960693, 0.006487307604402304, -0.016709227114915848, -0.008261414244771004, 0.021502312272787094, -0.012821502052247524, -0.007888618856668472, -0.013367381878197193, -0.014073030091822147, 0.028545483946800232, 0.011649859137833118, -0.023699142038822174, 0.015510955825448036, -0.022847037762403488, -0.011709772981703281, -0.018653089180588722, -0.020410552620887756, 0.00021926699264440686, -0.01030513271689415, -0.010864325799047947, -0.030302949249744415, 0.015005018562078476, 0.002775995060801506, 0.0023083363194018602, -0.015084903687238693, -0.01280153077095747, -0.007529137656092644, 0.018440062180161476, 0.025523178279399872, 0.013686920516192913, -0.014512396417558193, -0.03216692432761192, -0.01676248386502266, -0.0048829554580152035, 0.005731730721890926, 0.01041830237954855, -0.002932436065748334, -0.005428834352642298, -0.008940435014665127, 0.0010609693126752973, -0.002436484908685088, 0.03490963578224182, 0.005788316018879414, -0.03307228535413742, 0.012621790170669556, -0.005412191618233919, -0.0037678973749279976, 0.0164828859269619, 0.0029141290578991175, 0.0027327241841703653, -0.013200954534113407, 3.0086801416473463e-05, 0.024484675377607346, -0.002631203969940543, 2.1986508727422915e-05, 0.00824144296348095, -0.01589706540107727, 0.02652173675596714, 0.011110637336969376, 0.010771127417683601, 0.018200408667325974, -0.0004071209696121514, -0.017747728154063225, 0.02560306154191494, -0.008594268001616001, 0.02432490698993206, -0.004623329732567072, 0.0012506955536082387, -0.0203839261084795, -0.011796314269304276, -0.009220031090080738, 0.010138706304132938, 0.004293805453926325, -0.015164787881076336, 0.0037479260936379433, 0.0036447416059672832, -0.018253665417432785, 0.0002949910704046488, 0.03152784705162048, -0.006876745726913214, 0.006790203507989645, -0.007688906975090504, 0.02753361128270626, 0.010478216223418713, 0.019132398068904877, 0.0004826370277442038, -0.03898375853896141, -0.0062476531602442265, -0.013793433085083961, 0.0056152320466935635, -0.02451130375266075, 0.009286602027714252, -0.0035914850886911154, -0.0043304190039634705, 0.012834816239774227, -0.0016268196050077677, -0.004806398879736662, 0.0007847012602724135, -0.02835908532142639, 0.020024443045258522, -0.011143922805786133, 0.01983804628252983, -0.017974069342017174, -0.02451130375266075, 0.006444036494940519, 0.005804958287626505, 0.03999563306570053, 0.007169656455516815, 0.0013139377115294337, 0.009579513221979141, 0.027906406670808792, -0.024351535364985466, 0.031075168401002884, 0.011556660756468773, -0.005348949693143368, 0.03267286345362663, 0.0023382932413369417, 0.014605594798922539, 0.05080670118331909, 0.0023715784773230553, 0.009120175614953041, 0.007409310434013605, -0.012169110588729382, -0.000997727271169424, -0.007648964878171682, -0.015524270012974739, -0.02400536648929119, 0.008121616207063198, 0.004503502976149321, 0.004523473791778088, -0.006147797219455242, 0.010498187504708767, -0.0057650161907076836, 0.012049282900989056, 0.005325649864971638, 0.00010016798478318378, 0.028199316933751106, -0.006936659105122089, 0.013194297440350056, 0.027453726157546043, -0.023020122200250626, -0.008161558769643307, 0.0028325801249593496, -0.017508074641227722, 0.01440588291734457, 0.001506160362623632, 0.016323117539286613, -0.019571764394640923, 0.001610176987014711, 0.03091539815068245, 0.005418848711997271, 0.0017840927466750145, -0.012748274952173233, 0.02120940014719963, -0.005655174609273672, -0.04380347207188606, -0.0062709529884159565, 0.012428735382854939, 0.0014462468679994345, -0.000596639234572649, -0.007728849537670612, -0.02505718357861042, -0.04036842659115791, 0.022687269374728203, 0.016709227114915848, 0.011896170675754547, -0.009619454853236675, 0.002499727066606283, 0.0050893244333565235, -0.0006236835615709424, 0.014552338980138302, -0.0009952308610081673, 0.025536492466926575, 0.012695018202066422, -0.002438149182125926, -0.0012215710012242198, 0.004490188788622618, -0.011996026150882244, 0.029743755236268044, -0.006171097047626972, -0.015697352588176727, 0.002817601663991809, -0.008061702363193035, -0.03738606348633766, -0.006077898200601339, -0.0038511105813086033, -0.005332306958734989, -0.012402107007801533, 0.037998512387275696, 0.0023682499304413795, -0.005938099697232246, -0.008687466382980347, 0.018519947305321693, 0.005255750846117735, -0.004673257935792208, -0.010591386817395687, 0.01113060861825943, -0.007382682058960199, 0.05783655866980553, 0.006647076923400164, -0.03453683853149414, 0.03427055850625038, -0.011157236993312836, -0.008740723133087158, -0.01895931363105774, -0.003904367098584771, 0.013793433085083961, 0.019451936706900597, -0.02638859488070011, 0.0023915497586131096, 0.006697004660964012, -0.017002137377858162, 0.011530032381415367, 0.004896269645541906, -0.0039642807096242905, -0.008694123476743698, -0.0074958521872758865, -0.004952854476869106, 0.022008247673511505, -0.013780118897557259, 0.015337872318923473, 0.01440588291734457, 0.0025330123025923967, 0.010884297080338001, 0.03474986553192139, 0.03307228535413742, 0.008161558769643307, -0.0034616724587976933, -0.012089225463569164, -0.008108302019536495, 0.004130707122385502, 0.003180411644279957, -0.012182424776256084, 0.006320880725979805, -0.013267525471746922, 0.017761042341589928, 0.03554871305823326, 0.0007680585840716958, 0.02034398354589939, 0.01689562387764454, -0.0032220182474702597, -0.022181332111358643, -0.006044612731784582, 0.010458244942128658, -0.0007102253730408847, 0.011603259481489658, 0.022980179637670517, 0.0036147849168628454, -0.007069800514727831, 0.003621442010626197, -0.0009686026023700833, 0.005668488796800375, 0.012302251532673836, 0.002672810573130846, -0.0014054722851142287, -0.00019180661183781922, -0.005791644565761089, -0.06145799905061722, 0.003504943335428834, 0.012615133076906204, 0.008853892795741558, -0.009053604677319527, -0.016269860789179802, -0.017388246953487396, -0.01035173237323761, -0.024125194177031517, -0.026002485305070877, -0.018293607980012894, -0.016043521463871002, -0.005804958287626505, -0.006370808929204941, -0.023379603400826454, 0.020676836371421814, 0.022873666137456894, 0.009865766391158104, -0.014006459154188633, 0.0010568086290732026, 0.01813383772969246, 0.008221471682190895, -0.022021561861038208, -0.0033884448930621147, -0.031953901052474976, -0.023100007325410843, 0.008694123476743698, -0.01726841926574707, 0.004646629560738802, -0.01634974591434002, -0.0016043520299717784, -0.017880870029330254, -0.012741617858409882, 0.02729395590722561, -0.008867206983268261, 0.009393115527927876, -0.0009311566245742142, 0.010085449554026127, 0.0059014856815338135, -0.0034683295525610447, -0.015164787881076336, 0.0033368526492267847, -0.013067813590168953, -0.016616027802228928, -0.03930329531431198, -0.007648964878171682, 0.01768115721642971, 0.0017408218700438738, -0.021049631759524345, 0.012195738032460213, 0.009885737672448158, 0.025270208716392517, -0.006836803164333105, 0.015005018562078476, -0.012129168026149273, -0.0012531919637694955, 0.01268836110830307, 0.011396890506148338, 0.012195738032460213, -0.011822942644357681, -0.005305678583681583, 0.012881415896117687, -0.011550003662705421, 0.02881176583468914, -0.0053289784118533134, -0.05067355930805206, 0.022194646298885345, -0.022287845611572266, -0.03640081733465195, -0.004050822462886572, 0.0009436386171728373, -0.006364151835441589, 0.020170899108052254, -0.019891303032636642, -0.025216951966285706, -0.019119083881378174, 0.01571066677570343, -0.01539112813770771, 0.02729395590722561, -0.004443589132279158, -0.01800069771707058, -0.02689453214406967, -0.0074958521872758865, -0.007622336503118277, -0.02156888321042061, -0.018386807292699814, -0.03632093220949173, 0.0035748425871133804, 0.029663870111107826, -0.0183202363550663, 0.024338221177458763, -0.006417408119887114, -0.01326086837798357, -0.009812509641051292, -0.017002137377858162, -0.02505718357861042, -0.022194646298885345, 0.008021760731935501, -0.02248755656182766, 0.014951762743294239, 0.04638640955090523, 0.005648517515510321, -0.010704556480050087, 0.026721449568867683, 0.012628447264432907, 0.001023523393087089, 0.008833921514451504, 0.015923693776130676, 0.006930002011358738, -0.0208366047590971, 0.006287595722824335, 0.0015103210462257266, -0.004104079212993383, 0.010784441605210304, 0.01232222281396389, -0.0018190423725172877, 0.03198052942752838, -0.011776343919336796, -0.033098913729190826, -0.02693447470664978, -0.0045967018231749535, -0.006677033845335245, -0.013154355809092522, -0.003867753315716982, 0.013034528121352196, -0.016376374289393425, 0.004197278060019016, 0.02143574133515358, -0.0009752596379257739, -8.42534500407055e-05, 0.002516369568184018, 0.029690498486161232, -0.0002639941230881959, 0.019225595518946648, 0.007868647575378418, 0.00886054988950491, -0.005858215037733316, -0.011077351868152618, -0.042525313794612885, -0.03211366757750511, -0.013740177266299725, -0.006274281535297632, 0.01694888062775135, -0.003103855298832059, -0.012714989483356476, -0.016882309690117836, 0.01035173237323761, -0.008061702363193035, -0.016908938065171242, 0.0009794202633202076, -0.012362165376543999, -0.037492576986551285, -0.00817487295717001, -0.03765234351158142, -0.03514929115772247, 0.008001789450645447, -6.839091656729579e-05, -0.034057531505823135, 0.020716778934001923, -0.02134254202246666, -0.0028092802967876196, 0.009506285190582275, -0.010784441605210304, 0.041380301117897034, 0.0026694820262491703, 0.030942026525735855, 0.025483235716819763, 0.019292166456580162, -0.018533261492848396, -0.02803954668343067, -0.0005354774766601622, -0.0061444686725735664, 0.03842456638813019, 0.03248646482825279, 0.004317104816436768, -0.014166228473186493, 0.005611903499811888, 0.004610015545040369, -0.007043172139674425, -0.025350093841552734, 0.013573749922215939, 0.005784987471997738, 0.018160466104745865, -0.0020686821080744267, -0.0055353473871946335, 0.013780118897557259, 0.01046490203589201, -0.0009095211862586439, 0.004746485501527786, 0.004363704472780228, -0.01878623105585575, -0.0238189697265625, 0.039649464190006256, -0.020583637058734894, 0.01335406769067049, -0.008194844238460064, -0.002519698115065694, 0.007043172139674425, -0.0006744436686858535, 0.0033401811961084604, -0.0013563764514401555, -0.005179194733500481, -0.003950966522097588, -0.00012814845831599087, 0.02601579949259758, 0.02220796048641205, 0.0027094243559986353, -0.017974069342017174, -0.011103980243206024, 0.0304627176374197, 0.026308711618185043, -0.009080233052372932, -0.02428496442735195, 0.004606686998158693, 0.0012739953817799687, 0.019997816532850266, -0.002569626085460186, -0.01704207994043827, 0.014685479924082756, -0.016975509002804756, -0.021781908348202705, 0.017201850190758705, 0.005332306958734989, -0.0251903235912323, -0.006730290129780769, -2.8890610337839462e-05, -0.008674152195453644, -0.02803954668343067, -0.00787530466914177, 0.014991704374551773, -0.027879778295755386, -0.02684127539396286, 0.0019788118079304695, 0.02501724101603031, -0.0183202363550663, 0.009619454853236675, -0.03110179677605629, 0.01772109977900982, -0.00047473175800405443, -0.001972154714167118, 0.00047806030488573015, 0.010152020491659641, -0.009220031090080738, -0.03128819540143013, -0.0035848282277584076, -0.008188187144696712, -0.025935916230082512, 0.006570520810782909, -0.013121070340275764, -0.024564560502767563, -0.0019887974485754967, -0.009279944933950901, -0.01777435652911663, -0.010185305960476398, 0.006800189148634672, 0.002344950335100293, -0.009033633396029472, 0.00943305715918541, -0.0004092013114131987, -0.01186288520693779, 0.008600925095379353, -0.033604852855205536, -0.006956630386412144, 0.0052124797366559505, -0.014645537361502647, 0.02537672221660614, 0.008980377577245235, -0.00782870501279831, -0.007316111586987972, -0.003824482439085841, -0.02867862582206726, -0.0042738341726362705, 0.005195837467908859, 0.014419197104871273, -0.014698794111609459, 0.0003723794361576438, -0.0046765864826738834, 0.003465001005679369, 0.004510159604251385, 0.003373466432094574, -0.007668936159461737, 0.0038211538922041655, 0.02372577041387558, 0.015244673006236553, 0.01190948486328125, -0.020117642357945442, -0.024564560502767563, -0.024378161877393723, -0.019318794831633568, -0.02550986409187317, -0.019904617220163345, 0.0051925089210271835, 0.04279159754514694, 0.004769785329699516, -0.02368582785129547, -0.013127727434039116, 0.01800069771707058, -0.017468132078647614, -0.011103980243206024, 0.021915050223469734, 0.0037046552170068026, -0.0013264196459203959, 0.013014556840062141, -0.012195738032460213, 0.027640122920274734, 0.004763128235936165, -0.0005329810664989054, -0.0022667297162115574, 0.017255105078220367, 0.010218590497970581, -0.011423518881201744, -0.002210144652053714, -0.02459118887782097, -0.006630434188991785, -0.02327308990061283, 0.019092455506324768, -0.0029740426689386368, 0.007688906975090504, 0.023712456226348877, -0.007655621971935034, -0.0008579289424233139, 0.005958070978522301, 0.03283263370394707, 0.004669929388910532, 0.030382832512259483, 0.014206171035766602, -0.04148681461811066, -0.010704556480050087, -0.010371703654527664, -0.005618560593575239, -0.008920463733375072, -0.009399772621691227, -0.00039942373405210674, -0.00900034885853529, 0.024125194177031517, 0.0022783796302974224, -0.004856327082961798, -0.005036067683249712, 0.004959511570632458, -0.011536689475178719, 0.009286602027714252, -0.0011450147721916437, 0.019585078582167625, 0.007096428424119949, -0.01523135881870985, 0.010424959473311901, -0.03147459030151367, 0.011829599738121033, 0.0003135060251224786, -0.004736499860882759, -0.01676248386502266, 0.0017857570201158524, -0.011210492812097073, -0.010771127417683601, -0.011723087169229984, 0.005185851827263832, -0.014379254542291164, -0.027453726157546043, -0.014325998723506927, 0.013274182565510273, -0.010391674935817719, -0.0006415743846446276, -0.008075016550719738, 0.0066370912827551365, 0.007742163725197315, -0.0012739953817799687, -0.016562771052122116, 0.017321676015853882, -0.003518257522955537, -0.019132398068904877, 0.026308711618185043, -0.02550986409187317, 0.012335537001490593, -0.0015485991025343537, -0.0028225944843143225, -0.0024198421742767096, 0.02875850908458233, 0.21398460865020752, 0.015417756512761116, -0.009453028440475464, 0.04329753294587135, 0.05280381813645363, 0.008727408945560455, 0.011842913925647736, 0.012202395126223564, 0.011576632037758827, 0.015191416256129742, 0.019571764394640923, 0.015630783513188362, 0.005229122471064329, 0.003751254640519619, 0.004014208447188139, -0.017388246953487396, -0.0361877903342247, -0.020077699795365334, -0.002947414293885231, 0.04020865634083748, 0.02111620269715786, -0.0042971340008080006, 0.002711088629439473, -0.01273496076464653, 0.029424216598272324, 0.03349833935499191, -0.002313329139724374, -0.02408525161445141, 0.03472323715686798, 0.0023932140320539474, -0.008148244582116604, -0.01030513271689415, -0.011869542300701141, 0.026641564443707466, 0.0006082890904508531, -0.008940435014665127, 0.013081127777695656, -0.022687269374728203, 0.010811069048941135, -0.008301356807351112, 0.007222912739962339, 0.014578966423869133, 0.002541333669796586, 0.013700234703719616, -0.010697899386286736, 0.018985942006111145, -0.024657759815454483, 0.005465448368340731, 0.023739084601402283, -0.010225247591733932, -0.019092455506324768, 0.0009810845367610455, 0.015111532062292099, 0.031634360551834106, -0.006147797219455242, 0.006583834998309612, -0.009453028440475464, -0.0001948230928974226, -0.0015677382471039891, -0.005715087987482548, 0.011709772981703281, 0.024884099140763283, -0.028865022584795952, 0.035282429307699203, -0.0028325801249593496, -0.008714094758033752, -0.022420985624194145, -0.0208366047590971, 0.027040988206863403, -0.012268966063857079, 0.01321426872164011, 0.007569080218672752, -0.00900034885853529, -0.0006382458377629519, -0.009512942284345627, -0.007143028080463409, 0.012428735382854939, 0.04492185637354851, 0.012342194095253944, 0.008840578608214855, 0.009353172965347767, -0.017667843028903008, -0.014179542660713196, -0.00036114564863964915, -0.003488300833851099, -0.01634974591434002, 0.030116550624370575, 0.0029757069423794746, 0.016749169677495956, -0.00020553680951707065, -0.004337076097726822, -0.008667495101690292, -0.007316111586987972, -0.0011899499222636223, -0.003804511157795787, 0.026215512305498123, -0.00902031920850277, -0.006956630386412144, 0.001233220798894763, -0.026175569742918015, -0.01507158949971199, 0.056505147367715836, 0.02766675129532814, 0.015777237713336945, -0.01465885154902935, 0.005485419649630785, -0.015537584200501442, 0.004327090457081795, 0.013646977953612804, -0.003967609256505966, 0.011829599738121033, -0.02684127539396286, -0.0027077600825577974, -0.01923890970647335, 0.000629508460406214, -0.0035914850886911154, -0.012262308970093727, -0.014286056160926819, -0.0019654976204037666, -0.008554325439035892, -0.016962194815278053, -0.020117642357945442, 0.0014828606508672237, 0.004703214857727289, -0.0035016147885471582, -0.00022321962751448154, 0.005618560593575239, 0.0048463414423167706, 0.006780218333005905, -0.014991704374551773, 0.019039198756217957, 0.004263848531991243, -0.011343634687364101, -0.017800984904170036, 0.009313230402767658, -0.003724626498296857, 0.024311592802405357, 0.011330320499837399, -0.008893835358321667, 0.0018240350764244795, -0.018985942006111145, 0.019079141318798065, 0.006264295894652605, 0.0003638500638771802, 0.0072894832119345665, -0.01087763998657465, -0.006067912559956312, 0.00391768105328083, -0.0054321628995239735, -0.028865022584795952, -0.02830583043396473, 0.007995132356882095, -0.008414527401328087, -0.01186288520693779, 0.010318446904420853, 0.005675145890563726, -0.00035552875488065183, -0.010691242292523384, 0.035335686057806015, -0.010431616567075253, -0.026122312992811203, -0.026135627180337906, 0.03312554210424423, -0.0013921582140028477, -0.009799196384847164, -0.0010959189385175705, -0.17063382267951965, 0.024631131440401077, 0.04151344299316406, -0.02312663570046425, 0.02395211160182953, 0.009965622797608376, 0.03363148123025894, 0.015537584200501442, -0.016110090538859367, 0.0005146741168573499, 0.037306178361177444, -0.021728651598095894, -0.045694075524806976, -0.017601273953914642, 0.025909287855029106, -0.018440062180161476, 0.013547122478485107, 0.023512745276093483, -0.0030689057894051075, 0.00977922510355711, 0.04814387485384941, 0.002260072622448206, -0.029344331473112106, -0.0022767153568565845, -0.001012705615721643, -0.007728849537670612, -0.008947092108428478, 0.02958398498594761, 0.0005105134914629161, -0.034243930131196976, 0.0032769390381872654, -0.010984153486788273, 0.01548432745039463, -0.0025613047182559967, -0.004280491266399622, -0.015697352588176727, -0.011297035031020641, -0.012635104358196259, 0.0007035682792775333, 0.003411744488403201, 0.015044961124658585, 0.01644294336438179, 0.028465598821640015, 0.020184213295578957, 0.004620001185685396, 0.00014801562065258622, 0.007249541115015745, -0.006127825938165188, 0.00989239476621151, -0.040794480592012405, 0.010385017842054367, -0.013913260772824287, -0.005691788624972105, 0.0014063044218346477, 0.005874857772141695, 0.010504844598472118, 0.01174971554428339, 0.015857122838497162, 0.013107756152749062, -0.011510061100125313, -0.0030422776471823454, -0.01280153077095747, -0.02220796048641205, -0.0030173135455697775, -0.018107209354639053, -0.004240548703819513, 0.006081226747483015, 0.010851011611521244, -0.02376571297645569, 0.011396890506148338, -0.0030439419206231833, 0.0018207065295428038, 0.0026877890340983868, -0.013740177266299725, -0.0026145612355321646, 0.010737841948866844, -0.023246461525559425, -0.006204382050782442, 0.015111532062292099, -0.009899051859974861, -0.004476874601095915, 0.02194167859852314, -0.017374932765960693, 0.02616225555539131, -0.01951850764453411, -0.006194396410137415, 0.0034417014103382826, 0.011683144606649876, -0.0194652508944273, -0.004380347207188606, 0.008514382876455784, -0.02272721193730831, -0.015044961124658585, -0.008973720483481884, 0.006294252350926399, 0.04247205704450607, -0.024764271453022957, -0.017934126779437065, 0.027773264795541763, -0.006713647395372391, 0.016682598739862442, 0.007402653340250254, -0.03147459030151367, 0.01666928455233574, 0.03014317899942398, 0.0012615133309736848, 0.006410751026123762, 0.016882309690117836, 0.03743932023644447, -0.011643202044069767, 0.003924338147044182, 0.033045656979084015, 0.005122609436511993, 0.013547122478485107, 0.013899946585297585, 0.02697441726922989, 0.004337076097726822, -0.01927885226905346, 0.02674807608127594, 0.004613344091922045, 0.026668192818760872, -0.0032636248506605625, 0.007236226927489042, 0.013254211284220219, -0.007981818169355392, 0.010651299729943275, -0.10140037536621094, -0.02491072751581669, 0.002488077152520418, 0.0029873568564653397, -0.030196435749530792, 0.037173036485910416, 0.016616027802228928, 0.017388246953487396, -0.012308908626437187, 0.024711016565561295, 0.004912911914288998, -0.03293914347887039, -0.007176313549280167, -0.01440588291734457, 0.015697352588176727, 0.005032739136368036, -0.028865022584795952, -0.01433931291103363, -0.017840927466750145, -0.011802971363067627, 0.002582940272986889, -0.02680133283138275, -0.011077351868152618, -0.011802971363067627, 0.011849571019411087, -0.006091212388128042, -0.036986637860536575, -0.004709871485829353, -0.0019804760813713074, 0.0014770356938242912, -0.013427294790744781, -0.03544219955801964, 0.005305678583681583, -0.016003578901290894, 0.006870088633149862, 0.020716778934001923, -0.014206171035766602, -0.0020453825127333403, 0.014685479924082756, -0.013520494103431702, 0.006067912559956312, 0.006320880725979805, -0.017161907628178596, -0.03320542722940445, 0.012695018202066422, -0.014898505993187428, -0.02294023707509041, 0.013087784871459007, 0.016962194815278053, -0.004892941098660231, -0.01181628555059433, -0.024804214015603065, -0.028572112321853638, -0.030675744637846947, -0.011396890506148338, -0.008973720483481884, -0.023486116901040077, 0.004167321138083935, 0.002569626085460186, 0.004310447722673416, -0.012548563070595264, 0.016203289851546288, -0.008674152195453644, 0.006700333207845688, 0.04018202796578407, -0.0009710990125313401, -0.02312663570046425, 0.006384123116731644, 0.014645537361502647, -0.037758857011795044, -0.007322768680751324, 0.017334990203380585, -0.032273437827825546, 0.009879080578684807, -0.03179413080215454, 0.0007518319762311876, -0.01905251294374466, -0.004094093572348356, 0.017241790890693665, -0.018772916868329048, -0.008394556120038033, -0.028412342071533203, -0.021795222535729408, -0.010218590497970581, 0.012408764101564884, 0.02226121723651886, -0.0071297138929367065, -0.009093547239899635, -0.007535794749855995, -0.03512266278266907, 0.014312684535980225, 0.009353172965347767, 0.029690498486161232, -0.019704904407262802, -0.004460231866687536, 0.002451463369652629, 0.00039796752389520407, -0.0069233449175953865, 0.034430328756570816, 0.026814647018909454, 9.657941700424999e-05, -0.013713548891246319, -0.06396105885505676, 0.017388246953487396, 0.0064540221355855465, 0.010538130067288876, -0.0010659621329978108, 0.015976950526237488, 0.021262656897306442, -0.02648179419338703, 0.01694888062775135, 0.019065827131271362, -0.02614894136786461, 0.010544787161052227, -0.0025862688198685646, -0.0017058722442016006, 0.012635104358196259, -0.0162565466016531, 0.012442049570381641, 0.010598043911159039, 0.011869542300701141, -0.020024443045258522, 0.01754801720380783, -0.008827264420688152, 0.0038477820344269276, 0.0028891651891171932, -0.031048540025949478, 0.010864325799047947, -0.020876547321677208, 0.0006174425361678004, -0.013334096409380436, -0.007309454493224621, 0.03110179677605629, -0.004506831523030996, -0.022141389548778534, 0.020596951246261597, -0.005405534524470568, -0.018653089180588722, -0.021555569022893906, 0.02729395590722561, 0.027746636420488358, -0.002436484908685088, -0.01571066677570343, -0.02345948852598667, -0.004876298364251852, -0.05184520408511162, -0.02335297502577305, -0.036107905209064484, -0.0030406133737415075, -0.015950322151184082, 0.023006808012723923, -0.007262855302542448, 0.040474940091371536, 0.028971536085009575, 0.0022550798021256924, -0.03168761730194092, -0.02321983315050602, -0.02761349454522133, 0.011077351868152618, -0.015351186506450176, 0.028971536085009575, -0.02116945944726467, 0.006770232692360878, 0.020370611920952797, 0.017148593440651894, -0.006850117351859808, 0.0052124797366559505, 0.013234240002930164, 0.0002781403891276568, -0.0005637699505314231, 0.013700234703719616, -0.018306922167539597, -0.01754801720380783, 0.000263161986367777, 0.004403647035360336, -0.019438622519373894, 0.03397764638066292, -0.014672165736556053, -0.006723633036017418, 0.010637985542416573, -0.010531472973525524, 0.021036317571997643, -0.011323663406074047, 0.011217149905860424, -0.020410552620887756, 0.02729395590722561, 0.02070346474647522, 0.0007064807577989995, -0.024537932127714157, -0.003474986646324396, -0.03608127683401108, -0.0006964951753616333, -0.019491879269480705, -0.0005496237426996231, -0.012002683244645596, -0.005838243756443262, 0.01202265452593565, -0.0064307223074138165, -0.009619454853236675, -0.0046399724669754505, -0.014898505993187428, 0.013107756152749062, -0.013400666415691376, -0.011103980243206024, -0.006593820173293352, -0.006493964232504368, -0.010358389467000961, 0.02098306082189083, -0.014445825479924679, -0.034190673381090164, -0.016096776351332664, 0.021315913647413254, 0.008627552539110184, 0.005012767855077982, -0.017388246953487396, 0.0012265637051314116, -0.020623579621315002, 0.0024081922601908445, -0.021409112960100174, -0.017880870029330254, -0.03182075917720795, 0.028865022584795952, -0.0018356849905103445, -0.0074159675277769566, -0.0021652095019817352, -0.004094093572348356, 0.017800984904170036, 0.017188536003232002, 0.009952308610081673, -0.013686920516192913, 0.028092803433537483, 0.014099658466875553, -0.03339182585477829, -0.031021911650896072, 0.012422078289091587, -0.009346515871584415, -0.01850663311779499, -0.029690498486161232, -0.0017408218700438738, 0.022966865450143814, 0.008627552539110184, 0.07967172563076019, 0.012868101708590984, -0.009745939634740353, -0.0033168813679367304, -0.009552884846925735, 0.017055394127964973, 0.020024443045258522, 0.0022001592442393303, -0.03328531235456467, -0.007975161075592041, 0.019718218594789505, 0.0021069601643830538, 0.01698882319033146, -0.012202395126223564, 0.020809976384043694, 0.0063741374760866165, -0.033232055604457855, -0.03142133355140686, 0.008840578608214855, -0.009100204333662987, 0.023978738114237785, -0.03008992224931717, 0.022381044924259186, 0.006127825938165188, -0.016203289851546288, -0.0056618317030370235, 0.027826521545648575, 0.005581947043538094, -0.013726863078773022, -0.045560937374830246, -0.0010809404775500298, 0.004723185673356056, -0.03746594861149788, -0.007975161075592041, -0.009546227753162384, -0.010584729723632336, 0.0005338132032193244, 0.009792539291083813, 0.004167321138083935, 0.02532346546649933, -0.008274728432297707, 0.011723087169229984, 0.0011525038862600923, -0.016296489164233208, -0.030302949249744415, -0.017055394127964973, -0.006989915389567614, -0.026721449568867683, -0.010757813230156898], 'QueryEmbedding': [-0.013914729468524456, 0.00927648600190878, -0.028559677302837372, -0.0015838316176086664, -0.0230018999427557, 0.020608404651284218, -0.017957979813218117, -0.007187248673290014, -0.005682861898094416, -0.053468260914087296, 0.017971502617001534, 0.018863990902900696, -0.002484773052856326, -0.022028274834156036, 0.0010547608835622668, 0.011386008001863956, -0.0004838546155951917, 0.00976329855620861, -0.00357672106474638, -0.017241282388567924, 0.014523245394229889, 0.012981671839952469, 0.009438756853342056, 0.01982409507036209, 0.006642964668571949, 0.010277156718075275, 0.004350888542830944, -0.03242713585495949, -0.019986364990472794, 0.022041797637939453, -0.005114913918077946, -0.02073010616004467, 0.007423893548548222, -0.04397541284561157, -0.014955967664718628, 0.026625949889421463, 0.003813366172835231, -0.016091864556074142, 0.01338058803230524, 0.026139136403799057, 0.01227173674851656, 0.0009727802244015038, -0.0017799088964238763, -0.0076943449676036835, 0.0127653107047081, 0.00871529895812273, -0.00785661581903696, 0.001626089564524591, 0.004114243201911449, -0.009702447801828384, 0.010845105163753033, 0.026788219809532166, -0.015916069969534874, -0.012934342958033085, -0.011960716918110847, 0.003962114453315735, 0.012927581556141376, 0.003220063168555498, -0.0025067473761737347, -0.021663164719939232, 0.012177078984677792, 0.023055989295244217, -0.019715914502739906, 0.007816048339009285, -0.022433951497077942, -0.01948603056371212, -0.019296715036034584, -0.01135220192372799, 0.005824849009513855, 0.002932708477601409, 0.013461722992360592, 0.036862537264823914, 0.0009609479457139969, -0.007295429240912199, -0.002207560231909156, 0.009668640792369843, 0.0038235080428421497, 0.006020926404744387, -0.007484745234251022, -0.014401542022824287, 0.021595552563667297, 0.0007800835301168263, -0.032778721302747726, 0.007843093015253544, 0.03456370159983635, -0.005287326872348785, -0.04916808009147644, 0.033508941531181335, -0.023867344483733177, -0.00878291204571724, 0.045679256319999695, 0.03150760009884834, 0.005155481398105621, -0.0013750768266618252, 0.008661208674311638, -0.007822809740900993, -0.0115212332457304, 0.03250826895236969, -0.010182498954236507, -0.01889103651046753, -0.03426620364189148, -0.0013336639385670424, 0.004580772016197443, -0.004327224101871252, -0.014996535144746304, 0.02201475203037262, -0.018688198179006577, -0.0055374945513904095, 0.0065618292428553104, -0.0014317026361823082, -0.016646290197968483, 0.026828788220882416, 0.033346667885780334, -0.010263633914291859, 0.014131090603768826, 0.006866087205708027, -0.01987818442285061, -0.02141975797712803, -0.02037852071225643, -0.010250112041831017, 0.013029000721871853, 0.018214907497167587, -0.007477983832359314, -0.002549005439504981, 0.026828788220882416, -0.018255475908517838, -0.01507767103612423, -0.023962002247571945, 0.00043990625999867916, -0.00023305312788579613, 0.058525703847408295, 0.001023489865474403, 0.008681492879986763, 0.011615891940891743, -0.014496199786663055, 0.041865892708301544, -0.027423782274127007, 0.03889092430472374, -0.01032448559999466, -0.007836331613361835, 0.017335940152406693, 0.01164969801902771, 0.0217172559350729, 0.001310844556428492, 0.0023529280442744493, 0.037160035222768784, 0.006548306904733181, 0.0010843414347618818, -0.01584845781326294, 0.006480693817138672, 0.01705196686089039, -0.012575994245707989, 0.007363041862845421, -0.009222395718097687, 0.005628771614283323, -0.03023647703230381, -0.0108180595561862, -0.0012871801154688, -0.001154489815235138, -0.03150760009884834, 0.00927648600190878, 0.010635505430400372, -0.003093288978561759, -0.02064897119998932, 0.016172999516129494, 0.04365087300539017, 0.02582811750471592, -0.020486701279878616, -0.004661907441914082, -0.018701720982789993, 0.007552357856184244, 0.0024425149895250797, -0.012988433241844177, 0.00365109508857131, -0.0059465523809194565, 0.0002987643820233643, 0.0013083091471344233, -0.03177805244922638, -0.007187248673290014, -0.009601027704775333, 0.014104044996201992, 0.006281236186623573, 0.019851138815283775, 0.0037051853723824024, -0.0028989019338041544, -0.00926972460001707, -0.0178227536380291, -0.017971502617001534, 0.001959082903340459, -0.021825436502695084, -0.011129079386591911, 0.03183213993906975, 0.002696063369512558, -0.0015762251568958163, -0.6235529780387878, -0.02883012965321541, -0.006845803465694189, -0.011277827434241772, 0.04397541284561157, -0.004127766005694866, 0.005476642865687609, 0.00897222850471735, -0.021866003051400185, 0.02762662060558796, 0.0010513801826164126, -0.008316383697092533, 0.009161544032394886, -0.018228430300951004, 0.009053363464772701, -0.008857286535203457, -0.015212896279990673, -0.007139919325709343, -0.008154112845659256, 0.044570405036211014, 0.008127067238092422, -0.003230205038562417, -0.020486701279878616, -0.005821468308568001, 0.018918082118034363, 0.013150704093277454, 0.019039785489439964, -0.009857957251369953, 0.011656459420919418, 0.014523245394229889, -0.042244523763656616, 0.024056660011410713, 0.010135170072317123, -0.002746772952377796, 0.03640276938676834, 0.021663164719939232, -0.028451496735215187, 0.013056046329438686, 0.01402291003614664, 0.017971502617001534, -0.04018909111618996, 0.007417132146656513, -0.0008088190224952996, -0.004486114252358675, 0.004803894553333521, 0.02480040118098259, -0.013576664961874485, -0.010966808535158634, 0.0007107803248800337, -0.01786332204937935, 0.009472563862800598, -0.02582811750471592, -0.025855163112282753, -0.016294702887535095, 0.02248804084956646, -0.0018204766092821956, 0.022934285923838615, -0.008505699224770069, 0.030398748815059662, 0.014834264293313026, -0.011548278853297234, 0.016903217881917953, -0.0044996365904808044, -0.01390120666474104, -0.02831627056002617, 0.013076329603791237, -0.01205537561327219, -0.026396065950393677, 0.018985694274306297, 0.016375837847590446, -0.018431268632411957, 0.010899195447564125, -0.0013843736378476024, 0.010094601660966873, -0.00820144172757864, 0.0009516511927358806, 0.03404984250664711, 0.00939818937331438, -0.012988433241844177, 0.00407029502093792, 0.003071314888074994, -0.012467813678085804, -0.016808560118079185, -0.019472507759928703, 0.004513159394264221, -0.012657130137085915, -0.038485247641801834, 0.001285489764995873, 0.00750502897426486, 0.006399558391422033, 0.0033096501138061285, 0.00983091164380312, 0.012623323127627373, -0.004300178959965706, -0.01739003136754036, 0.007789003197103739, -0.016159476712346077, 0.010128408670425415, -0.018404224887490273, -0.04018909111618996, 0.006916796788573265, 0.013069568201899529, -0.009878240525722504, 0.0039080241695046425, 0.014915400184690952, 0.004580772016197443, -0.00196415395475924, 0.0033840243704617023, 0.031669870018959045, -0.0281810462474823, 0.00017156766261905432, -0.01932375878095627, -0.0011916769435629249, 0.003089908277615905, -0.028289226815104485, -0.0231236033141613, 0.01438801921904087, -0.012717981822788715, -0.012278498150408268, -0.008519222028553486, -0.0023867343552410603, 0.03645686060190201, 0.014279838651418686, -0.014874831773340702, 0.014983012340962887, 0.03418507054448128, -0.016037773340940475, 0.01130487211048603, -0.0011257543228566647, 0.017849799245595932, 0.023326441645622253, 0.0005413255421444774, 0.009864718653261662, -0.0281810462474823, -0.002347856992855668, -0.015280509367585182, 0.010405621491372585, -0.004361030180007219, 0.010196021758019924, -0.030209431424736977, 0.008174396120011806, 0.014739606529474258, -0.0017663863254711032, 0.008742344565689564, -0.0019472507992759347, -0.027829458937048912, -0.025976866483688354, 0.007592925801873207, -0.01661924459040165, 0.011967478320002556, -0.02389439009130001, -0.020013410598039627, 0.01628118008375168, -0.007498267572373152, 0.024394724518060684, -0.007160203531384468, 0.007058783899992704, -0.028884219005703926, 0.0075996872037649155, -0.048248548060655594, -0.0005882320110686123, 0.022149978205561638, 0.009837673045694828, -0.004584152717143297, 0.0063150422647595406, -0.016632767394185066, -0.033779390156269073, 0.021730776876211166, 0.002545624738559127, -0.018945127725601196, 0.03112896718084812, -0.020743628963828087, 0.008059454150497913, 0.015131761319935322, 0.005747094284743071, -0.00638265535235405, -0.029371032491326332, 0.03258940577507019, 0.04356973618268967, -0.0019523217342793941, 0.004320462699979544, 0.018904559314250946, 0.020270340144634247, 0.0014409993309527636, 0.010371814481914043, -0.006575352046638727, -0.005480023566633463, 0.018525928258895874, -0.02839740738272667, 0.032995082437992096, -0.03191327676177025, 0.030642153695225716, -0.029911935329437256, -0.021906571462750435, -0.017619915306568146, 0.018039114773273468, -0.011507711373269558, 0.02407018281519413, -0.01778218522667885, -0.00903308019042015, -0.0102365892380476, 0.013137181289494038, -0.008735583163797855, -0.0021534699480980635, 0.010310962796211243, 0.013799787499010563, -0.01100737601518631, -0.013603710569441319, 0.010358292609453201, 0.008296099491417408, 0.015239941887557507, -0.0024273020680993795, -0.025463007390499115, -0.0014562122523784637, 0.00040863530011847615, 0.021392712369561195, -0.013333258219063282, 0.0030239857733249664, -0.003688282333314419, 0.02367802895605564, 0.025882208719849586, 0.0055848234333097935, 0.007133158389478922, -0.013421155512332916, -0.015726754441857338, 0.007633493281900883, -0.004418501164764166, -0.003701804904267192, 0.003265701700001955, -0.034076888114213943, -0.02235281653702259, 0.005202810745686293, 0.030561018735170364, 0.001087722135707736, -0.0005303384969010949, 0.020486701279878616, 0.038458202034235, -0.007248099893331528, 0.009952615015208721, 0.007275145035237074, 0.0025371729861944914, 0.03948591649532318, 3.380643829586916e-05, 0.003539533820003271, 0.02150089293718338, -0.011757878586649895, 0.015699708834290504, 0.0014257865259423852, -0.036943674087524414, 0.014969490468502045, -0.008593596518039703, -0.007897183299064636, -0.015334599651396275, -0.0011223737383261323, 0.010358292609453201, -0.027937639504671097, -0.03185918554663658, 0.011724072508513927, 0.016970831900835037, 0.021014081314206123, 0.014198703691363335, 0.0005142804002389312, 0.017444120720028877, -0.0035226307809352875, 0.009587505832314491, 0.03743048757314682, 0.003355288878083229, 0.019553642719984055, 0.002175444271415472, -0.03464483469724655, 0.028072865679860115, -0.01691674068570137, 0.028559677302837372, -0.022542132064700127, -0.006893132347613573, -0.015388689935207367, -0.0006114739226177335, 0.024273021146655083, -0.002807624638080597, 0.026152659207582474, -0.0021095217671245337, -0.05344121530652046, 0.018039114773273468, 0.024556996300816536, -0.007038500159978867, -0.006217003799974918, 0.003362050047144294, -0.01592959277331829, -0.014942444860935211, 0.009175066836178303, 0.016903217881917953, 0.018106726929545403, -0.009418473578989506, 0.01445563230663538, 0.007403609808534384, 0.0154157355427742, 0.04159544035792351, -0.010243350639939308, -0.006855945568531752, 0.01597016118466854, -0.02869490347802639, 0.0020689538214355707, -0.01214327197521925, 0.008512460626661777, 0.04573334753513336, -0.0052467589266598225, -0.0460037998855114, -0.01751173473894596, 0.02085180953145027, -0.011061466298997402, -0.02980375476181507, 0.014739606529474258, 0.0006934545235708356, 0.00933733768761158, -0.0013235219521448016, -0.00593302957713604, -0.009999943897128105, 0.03710594400763512, 0.0256928913295269, 0.008667970076203346, -0.00903308019042015, -0.03521278500556946, 0.01250838115811348, 0.010344769805669785, 0.004993210546672344, -0.01695730909705162, -0.045760393142700195, -0.0023394054733216763, -0.025679368525743484, -0.01618652231991291, -0.002621689112856984, -0.004300178959965706, 0.021866003051400185, 0.010696356184780598, -0.04776173457503319, -0.01863410882651806, 0.008884331211447716, -0.026287885382771492, 0.024908581748604774, 0.025165511295199394, 0.0015939734876155853, -0.01128458883613348, 0.006352229509502649, -0.009952615015208721, -0.012630084529519081, 0.02676117606461048, -0.0033857147209346294, -0.00023791279818397015, 0.015605051070451736, 0.013847116380929947, 0.05065556615591049, -0.00884376373142004, 0.022244635969400406, -0.014104044996201992, -0.03523983061313629, 0.01081129815429449, -0.0015889025526121259, 0.02286667376756668, 0.010872149839997292, 0.03264349699020386, -0.01438801921904087, 0.002101070014759898, 0.006544926203787327, 0.010202782228589058, 0.0281810462474823, 0.024002570658922195, 0.00854626763612032, -0.011102033779025078, 0.026531292125582695, 0.0027907213661819696, -0.009756538085639477, 0.010588175617158413, 0.006301519926637411, 0.00757940299808979, -0.012717981822788715, 0.00526704266667366, -0.009871479123830795, 0.038404110819101334, -0.00551382964476943, 0.02256917767226696, -0.03656504303216934, 0.01075044646859169, -0.010676072910428047, -0.05019579827785492, -0.007065545301884413, 0.012663891538977623, -0.0037220886442810297, -0.01772809587419033, -0.014712560921907425, -0.019932275637984276, -0.01220412366092205, -0.010067556984722614, -0.0064266035333275795, -0.0024306827690452337, -0.034022796899080276, -0.002234605373814702, -0.009350860491394997, 0.004256230313330889, 0.03764684870839119, 0.005243378225713968, 0.03023647703230381, 0.004266372416168451, -0.018958650529384613, 0.036646176129579544, -0.025719936937093735, -0.033508941531181335, 0.004888410679996014, -0.038350023329257965, -0.011203452944755554, -0.010757207870483398, -0.008411041460931301, 0.007917467504739761, 0.0048613655380904675, -0.021473849192261696, -0.01032448559999466, -0.012156794779002666, 0.018525928258895874, -0.00912097655236721, 0.0334818959236145, -0.003965495154261589, -0.011142601259052753, -0.0115820849314332, -0.0017714572604745626, -0.013096613809466362, 0.015104715712368488, -0.007139919325709343, -0.019337281584739685, -0.008593596518039703, -0.0007843093480914831, 0.014617903158068657, 0.006913416553288698, -0.019715914502739906, 0.012041852809488773, -0.00926972460001707, 0.016456972807645798, -0.015280509367585182, 0.016903217881917953, -0.02179839089512825, 0.008512460626661777, 0.011730833910405636, 0.0231641698628664, -0.007417132146656513, 0.0011249091476202011, -0.011791685596108437, -0.008762628771364689, -0.014293361455202103, 0.019540119916200638, -0.0034059984609484673, -0.03786320984363556, 0.025084376335144043, 0.006964126136153936, -0.005236617289483547, 0.009344099089503288, 0.021744299679994583, -0.009100692346692085, 0.017146624624729156, -0.01756582409143448, -0.025233125314116478, -0.014171658083796501, -0.0009296769858337939, -0.001864425023086369, 0.03221077471971512, -0.013982342556118965, -0.02132510021328926, -0.03253531455993652, -0.01597016118466854, -0.003637572517618537, 0.011047943495213985, -0.026409588754177094, -0.026707084849476814, 0.011413052678108215, -0.02501676231622696, 0.004361030180007219, 0.020932946354150772, 0.028938310220837593, 0.01177816279232502, -0.03161577880382538, -0.019580688327550888, -0.02804582007229328, -0.025233125314116478, 0.00939818937331438, -0.0034482565242797136, 0.021433280780911446, 0.038133662194013596, 0.0438401885330677, 0.008309622295200825, 0.022028274834156036, -0.009945853613317013, -0.02240690588951111, 0.021014081314206123, 0.005050681531429291, -0.0011933671776205301, -0.01183901447802782, 0.011054704897105694, 0.00673424219712615, -0.017592869699001312, 0.027559006586670876, -0.0005637223366647959, -0.013840354979038239, 0.011020898818969727, -0.03183213993906975, -0.033427804708480835, -0.008701777085661888, -0.025895731523633003, -0.017619915306568146, 0.0019523217342793941, 0.004053391981869936, 0.008634163998067379, -0.016375837847590446, -0.014577335678040981, 0.03104783222079277, -0.004645004402846098, 0.00976329855620861, 0.018255475908517838, 0.05014170706272125, 0.0036815209314227104, 0.01254894956946373, -0.009344099089503288, -0.0024425149895250797, -0.016849128529429436, 0.012968149036169052, -0.005219713784754276, -0.014469155110418797, -0.005037159193307161, -0.005936410278081894, 0.03956705331802368, 0.0075996872037649155, 0.008242009207606316, -0.017809230834245682, 0.0013978962088003755, -0.006409700494259596, -0.0016801799647510052, -0.008005363866686821, -0.00695060333237052, -0.022947808727622032, -0.030182387679815292, -0.010520563460886478, 0.009573983028531075, 0.012461052276194096, 0.008897854015231133, -0.002853263169527054, 0.01987818442285061, 0.01079101487994194, -0.04183884710073471, -0.0006372513598762453, -0.027261510491371155, 0.03212963789701462, -0.014658470638096333, 0.006632823031395674, 0.026964014396071434, 0.00504392059519887, -0.025476530194282532, -0.006139249075204134, -0.01515880599617958, -0.02869490347802639, 0.02676117606461048, 0.019797049462795258, 0.0007627577288076282, -0.010838343761861324, -0.002373211784288287, -0.004469210747629404, -0.02458404004573822, -0.011757878586649895, 0.0281810462474823, -0.01183901447802782, 0.00856655091047287, -0.013651039451360703, -0.01713310182094574, -0.0063387067057192326, 0.0006406320026144385, 0.00502025568857789, 0.007849854417145252, 0.015321076847612858, -0.011642936617136002, -0.01944546215236187, 0.002562528010457754, -0.05241350084543228, 0.014942444860935211, -0.007200771011412144, -0.005689623299986124, -0.006436745636165142, 0.024300066754221916, 0.007281906437128782, -0.009425234980881214, -0.01355638075619936, -0.002412089379504323, 0.020878855139017105, 0.0052230944857001305, 0.0025997150223702192, 0.0075996872037649155, -0.00912097655236721, -0.00961455050855875, 0.018945127725601196, 0.027991728857159615, -0.001334509113803506, -0.017268327996134758, -0.0006706351996399462, 0.02325882762670517, 0.021893048658967018, -0.011237259954214096, -0.02321826107800007, -0.015780843794345856, -0.026652995496988297, -0.007268384099006653, 0.014590858481824398, 0.0023427861742675304, 0.02444881573319435, 0.014915400184690952, 0.00043779335101135075, -0.025665847584605217, -0.020716585218906403, 0.007187248673290014, 0.006869467906653881, -0.016970831900835037, 0.0025388633366674185, 0.007768718991428614, 0.012305542826652527, -0.01158884633332491, -0.0011899865930899978, -0.030425792559981346, 0.002944540698081255, 0.0026487342547625303, -0.02513846568763256, -0.0036308113485574722, -0.0016421476611867547, -0.008918138220906258, -0.042974743992090225, 0.007383325602859259, -0.014563812874257565, 0.0025743602309376, 0.0014815670438110828, -0.008924899622797966, 0.004962784703820944, -0.011595607735216618, 0.012224407866597176, 0.013475245796144009, -0.00021298055071383715, -0.02132510021328926, 0.029019445180892944, 0.009107453748583794, 0.017335940152406693, -0.008154112845659256, 0.0041345274075865746, 0.016686856746673584, -0.012278498150408268, -0.02192009426653385, -0.004705856088548899, -0.009377905167639256, 0.02727503329515457, -0.0062203845009207726, -0.008762628771364689, -0.003914785571396351, -0.031074875965714455, -0.003380643669515848, -0.01970239169895649, 0.003115263069048524, -0.006784951779991388, -0.013941774144768715, -0.026030955836176872, -0.021338623017072678, 0.006964126136153936, 0.02899239957332611, 0.011636175215244293, -0.016118908300995827, 0.015997206792235374, 0.014171658083796501, 0.0003465159679763019, 0.02513846568763256, -0.00010965963156195357, -0.0019962701480835676, -0.012941104359924793, -0.010405621491372585, -0.05276508629322052, -0.0073089515790343285, -0.01150094997137785, 0.020053979009389877, -0.007004693616181612, -0.011690265499055386, -0.003975636791437864, 0.008383996784687042, -0.016200045123696327, -0.013211555778980255, 0.0065381648018956184, -0.0014333928702399135, 0.001937108812853694, -0.008059454150497913, -0.011358962394297123, 0.0054495977237820625, -0.008167634718120098, -0.01467199344187975, -0.04132498800754547, 0.030101250857114792, 0.00042955303797498345, 0.005848513450473547, 0.039594098925590515, -0.011629413813352585, -0.017836276441812515, -0.011981001123785973, -0.007200771011412144, 0.02286667376756668, 0.016592198982834816, 0.024083705618977547, 0.007160203531384468, 0.00897222850471735, 0.007849854417145252, 0.003867456456646323, 0.012285259552299976, -0.009621311910450459, -0.00037651919410564005, -0.03515869379043579, -0.0014055025530979037, -0.005578062031418085, 0.0007107803248800337, -0.0015787605661898851, -0.008965467102825642, 0.007450938690453768, 0.0004282853042241186, 0.016754470765590668, 0.007369803264737129, -0.012920820154249668, -0.0039553530514240265, 0.032697584480047226, 0.026030955836176872, 0.01644345000386238, -0.01778218522667885, 0.05406325310468674, 0.005256901029497385, 0.007248099893331528, 0.006091919727623463, -0.030561018735170364, -0.013542858883738518, -0.009837673045694828, 0.005828229710459709, -0.0058113266713917255, 0.0033062694128602743, -0.021744299679994583, -0.018444791436195374, 0.002486463403329253, -0.012589517049491405, -0.027829458937048912, -0.010358292609453201, -0.042893607169389725, 0.0154157355427742, 0.00039025305886752903, -0.0005797803751192987, -0.0004521610972005874, 0.008147351443767548, -0.0021686828695237637, -0.004114243201911449, -0.023110080510377884, 0.010344769805669785, -0.030344657599925995, -0.03935069218277931, 0.021135784685611725, -0.016010727733373642, -0.0020013409666717052, -0.026179704815149307, -0.014036432839930058, -0.000606402987614274, 0.03429324924945831, 0.20943763852119446, 0.004056772217154503, -0.017444120720028877, 0.022515086457133293, 0.010980330407619476, 0.008532744832336903, 0.0018931605154648423, 0.0044523077085614204, 0.01423927117139101, 0.024976195767521858, 0.004036488477140665, 0.017038444057106972, 0.03226486220955849, 0.006649726070463657, 0.021527938544750214, 0.016592198982834816, -0.035861868411302567, -0.017917411401867867, -0.028451496735215187, -0.008559789508581161, 0.028072865679860115, 0.008749105967581272, -0.00402634683996439, -0.013056046329438686, 0.03304917365312576, 0.007991841994225979, -0.0012271736050024629, -0.007045261561870575, 0.03486119583249092, -0.020229771733283997, -0.012731503695249557, 0.004489494953304529, -0.001937108812853694, 0.00869501568377018, 0.022880196571350098, -0.01699787564575672, -0.0062913778237998486, -0.00695060333237052, 0.010919478721916676, -0.004178475588560104, 0.009736253879964352, -0.020148636773228645, 0.011811968870460987, -0.0021669925190508366, -0.014131090603768826, 0.025449486449360847, -0.0034262824337929487, 0.00750502897426486, 0.010709878988564014, -0.026869356632232666, -0.009966137818992138, 0.007897183299064636, 0.016091864556074142, 0.028424452990293503, -0.01683560572564602, -0.0072616226971149445, 0.026869356632232666, -0.008059454150497913, -0.015483347699046135, 0.012062137015163898, -0.017065489664673805, 0.03551028296351433, -0.011940433643758297, -0.00040652239113114774, 0.0032454179599881172, -0.010081079788506031, -0.011487427167594433, -0.00750502897426486, 0.004046630579978228, -0.01995931938290596, 0.004087198060005903, -0.03767389431595802, -0.01038533728569746, -0.0030222954228520393, 0.0034059984609484673, -0.005665958859026432, -0.0011350511340424418, 0.02393495664000511, 0.02033795230090618, 0.003637572517618537, 0.008580073714256287, -0.0179444570094347, -0.007978319190442562, -0.008302860893309116, -0.007085829041898251, 0.0028904504142701626, -0.015456303022801876, -0.004506397992372513, -0.014077000319957733, 0.0014367735711857677, 0.014171658083796501, -0.0255711879581213, -0.00875586736947298, -0.006991171278059483, 0.0179444570094347, 0.036375727504491806, 0.007484745234251022, -0.012677413411438465, -0.02480040118098259, -0.03150760009884834, -0.022460997104644775, 0.06636879593133926, 0.00854626763612032, 0.006129106972366571, -0.015523916110396385, 0.01122373715043068, 0.014360974542796612, 0.004928978625684977, -0.007890421897172928, -0.0009322125115431845, -0.003221753519028425, -0.019851138815283775, -0.01871524378657341, -0.015645619481801987, -0.01905330829322338, -0.005206191446632147, -0.002795792417600751, -0.0037930821999907494, 0.016727425158023834, -0.0027873406652361155, 0.0032454179599881172, -0.023069512099027634, 0.01812024973332882, 0.018079683184623718, -0.028343316167593002, 0.009215634316205978, -0.015740277245640755, -0.011906626634299755, -0.001614257344044745, -0.050898972898721695, 0.0022379860747605562, -0.006375893950462341, -0.00025777408154681325, -0.004060152918100357, 0.013306213542819023, 0.01683560572564602, 0.013015477918088436, 0.008214964531362057, -0.027721278369426727, -0.021446803584694862, 0.012339349836111069, -0.005209571681916714, 0.01004727277904749, -0.0026014053728431463, 0.006845803465694189, -0.013651039451360703, 0.011230498552322388, 0.01683560572564602, -0.01060169842094183, -0.027721278369426727, -0.029046490788459778, -0.024340635165572166, 0.01207565888762474, 0.014198703691363335, 0.0205137450248003, 0.01467199344187975, -0.004337365739047527, -0.033292580395936966, 0.016862651333212852, -0.010277156718075275, -0.0409463569521904, -0.024354157969355583, 0.043515644967556, -0.00596345541998744, -0.01687617413699627, -0.026747653260827065, -0.17200714349746704, 0.0051115332171320915, 0.020324429497122765, -0.029452167451381683, 0.020703062415122986, 0.005581442732363939, 0.055361419916152954, 0.023407576605677605, -0.004330604337155819, 0.0018441411666572094, 0.017308896407485008, 0.002707895589992404, -0.04116271808743477, -0.0022768634371459484, 0.014401542022824287, -0.01845831423997879, -0.005432694219052792, 0.002337715122848749, 0.035050515085458755, 0.00933733768761158, 0.046571746468544006, -0.0050405398942530155, -0.0042528496123850346, 0.006541545502841473, 0.02758605219423771, 0.012197362259030342, -0.008789673447608948, 0.0050405398942530155, -0.004665288142859936, -0.042379748076200485, 0.0026893019676208496, 0.006997932214289904, 0.00013850074901711196, -0.0280999094247818, 0.007863377220928669, 0.02419188618659973, -0.0044759721495211124, -0.016389360651373863, -0.007525312714278698, 0.012258213944733143, 0.007755196653306484, 0.01460438035428524, 0.04173066467046738, 0.016497541218996048, 0.02877603843808174, 0.018255475908517838, 0.01567266322672367, -0.008451608940958977, 0.025111421942710876, -0.019066831097006798, -0.004178475588560104, -0.028965355828404427, 0.008397518657147884, -0.0059296488761901855, 0.009729492478072643, 0.028018774464726448, 0.013887683860957623, 0.016538109630346298, -0.0140499547123909, -0.005077726673334837, 0.012717981822788715, -0.016903217881917953, -0.016970831900835037, -0.011331917718052864, -0.019905230030417442, -0.006031068507581949, -0.009573983028531075, 0.002968205139040947, -0.014617903158068657, 0.014266316778957844, -0.02728855609893799, 0.010797776281833649, -0.011149362660944462, 0.001749483053572476, 0.021054649725556374, 0.010919478721916676, -0.008343428373336792, 0.019080352038145065, 0.022501563653349876, -0.01644345000386238, -0.030939651653170586, 0.04635538533329964, -0.000487235258333385, 0.008093261159956455, -0.005392126739025116, 0.029776709154248238, 0.004864746239036322, 0.003084837459027767, -0.005280565470457077, 0.008525983430445194, 0.027464348822832108, -0.03537505492568016, -0.02367802895605564, -0.0076064481399953365, 0.028640814125537872, 0.01580788940191269, -0.02029738388955593, -0.010743685998022556, 0.016456972807645798, 0.006680151913315058, 0.020189203321933746, -0.02317769266664982, -0.03675435855984688, 0.029830800369381905, 0.0022701022680848837, 0.014658470638096333, 0.0059938812628388405, 0.03267053887248039, 0.02090590074658394, -0.017538780346512794, -0.013461722992360592, 0.028208089992403984, -0.0006300674867816269, 0.028018774464726448, 0.02021624892950058, 0.017362985759973526, -0.01764696091413498, -0.014726083725690842, -0.005405649077147245, 0.032183729112148285, 0.024124274030327797, -0.025517098605632782, 0.009533415548503399, 0.0032352760899811983, 0.014766651205718517, 0.016037773340940475, -0.05168328061699867, -0.04497608169913292, 0.02899239957332611, 0.011636175215244293, -0.021784868091344833, 0.023353487253189087, -0.0017300443723797798, 0.02252860926091671, -0.02697753719985485, 0.016335269436240196, 0.008397518657147884, -0.01390120666474104, -0.011791685596108437, -0.02488153800368309, 0.01816081814467907, 0.024205408990383148, 0.00340430811047554, -0.022974854335188866, -0.001172238145954907, 0.006724100094288588, 0.0067646680399775505, -0.000937283446546644, 0.018525928258895874, -0.040919311344623566, -0.021379191428422928, 0.021554984152317047, -0.020270340144634247, 0.00968216359615326, 0.00526704266667366, 0.027680709958076477, 0.004486114252358675, -0.013137181289494038, 0.006507738959044218, -0.0044286432676017284, -0.01486130990087986, -0.014780174009501934, -0.03780911862850189, 0.013083091005682945, 0.00106828345451504, -0.022001229226589203, -0.001081806025467813, 0.0016776444390416145, 0.013373826630413532, -0.034320294857025146, -0.019837617874145508, -0.004178475588560104, -0.014415064826607704, 0.03037170320749283, 0.02150089293718338, -0.01235287170857191, -0.0022447474766522646, -0.011717311106622219, 0.003887740196660161, -0.03258940577507019, -0.01559152826666832, 0.014577335678040981, 0.006815377622842789, 0.007944513112306595, -0.015578006394207478, -0.0015069219516590238, -0.011534756049513817, -0.000835441576782614, 0.019039785489439964, 0.022880196571350098, 0.02543596364557743, 0.019513076171278954, -0.014252793975174427, -0.026964014396071434, 0.004601056221872568, -0.019350804388523102, -0.008492177352309227, 0.022596223279833794, -0.04851899668574333, -0.013137181289494038, -0.010804536752402782, 0.02021624892950058, -0.030696244910359383, -0.015348122455179691, 0.008309622295200825, -0.02620675042271614, -0.004999971948564053, -0.022379860281944275, -0.030479883775115013, -0.034022796899080276, 0.026436634361743927, 0.016172999516129494, 0.0019016120349988341, 0.0018914701649919152, 0.0010437737219035625, -0.029316941276192665, -0.0008493867353536189, 0.00014167009794618934, 0.05011466145515442, -0.0334818959236145, -0.012210885062813759, 0.00048808043356984854, 0.02419188618659973, 0.003901262767612934, 0.019513076171278954, -0.0011147672776132822, -0.002853263169527054, -0.010439427569508553, -0.07729503512382507, 0.004976307507604361, -0.019418416544795036, 0.014631425961852074, 0.001669192803092301, 0.012231169268488884, 0.004874888341873884, -0.0121229887008667, -0.004256230313330889, 0.010405621491372585, -0.03161577880382538, 0.01235963311046362, -0.015118238516151905, -0.004327224101871252, -0.0077078677713871, 0.0042291851714253426, -0.0048850299790501595, 0.0012685864930972457, 0.010141931474208832, -0.02193361707031727, -0.01409052312374115, -0.002172063570469618, 0.024043137207627296, 0.017849799245595932, -0.005872177891433239, 0.011169646866619587, -0.009918808937072754, 0.0019066830864176154, -0.01966182328760624, 0.0015618574107065797, 0.03729525953531265, -0.012001285329461098, -0.004634862300008535, 0.03221077471971512, -0.016930263489484787, -0.023191215470433235, 0.005452978424727917, 0.0023563087452203035, 0.05311667174100876, -0.00035982727422378957, -0.026842311024665833, -0.027721278369426727, -0.013887683860957623, -0.0017444121185690165, -0.008309622295200825, -0.00026052084285765886, 0.020270340144634247, 0.0037558951880782843, 0.0020317668095231056, 0.012515142560005188, 0.009837673045694828, 0.011176408268511295, 0.004033107776194811, -0.024773357436060905, 0.0035868629347532988, -0.02527369186282158, 0.021811913698911667, -0.009431995451450348, 0.03602413833141327, -0.013678084127604961, 0.015645619481801987, 0.028965355828404427, 0.057281628251075745, 0.014847787097096443, -0.0022041797637939453, 0.009851195849478245, -0.0019540120847523212, -0.015456303022801876, 0.04603084549307823, -0.02073010616004467, -0.013711891137063503, -0.011852536350488663, 0.006997932214289904, -0.008776150643825531, 0.026747653260827065, -0.01751173473894596, -0.0006938771111890674, 0.005287326872348785, -0.009770059958100319, 0.015997206792235374, 0.007640254683792591, 0.021135784685611725, -0.026355497539043427, 0.01863410882651806, 0.03799843415617943, 0.034834153950214386, 0.002062192652374506, -0.009634834714233875, -0.006108823232352734, -0.01592959277331829, -0.009357621893286705, 0.01479369681328535, -0.022623267024755478, -0.008634163998067379, 0.0010927930707111955, 0.00413114670664072, -0.0010868769604712725, -0.00897222850471735, -0.009296770207583904, 0.00743065495043993, -0.0027146569918841124, 0.0025067473761737347, -0.013049284927546978, -0.014807219617068768, -0.032913945615291595, 0.02847854234278202, -0.031669870018959045, -0.028938310220837593, -0.0029276374261826277, -0.007775480393320322, 0.01845831423997879, 0.004242707975208759, 0.03253531455993652, 0.0054969266057014465, -0.01310337521135807, -0.0004132836766075343, -0.018309565261006355, -0.02594982087612152, -0.031210102140903473, 0.02260974422097206, -0.010540846735239029, 0.014360974542796612, -0.0026487342547625303, 0.018607063218951225, 0.00801212526857853, 0.044002458453178406, 0.011656459420919418, -0.0032352760899811983, 0.03296803683042526, -0.007146680727601051, -0.006578732747584581, 0.0016463734209537506, -0.010703117586672306, -0.009972899220883846, -0.01695730909705162, -0.009222395718097687, -0.013238600455224514, 0.015104715712368488, -0.019648300483822823, 0.0591747872531414, -0.01235963311046362, -0.02132510021328926, -0.009431995451450348, 0.013116897083818913, 0.017660481855273247, 0.019066831097006798, 0.01618652231991291, -0.03126419335603714, -0.052440546452999115, 0.05928296595811844, -0.01390120666474104, 0.020892377942800522, -0.042677246034145355, 0.0121229887008667, 0.008796434849500656, -0.026220273226499557, -0.0068998937495052814, 0.013441439718008041, -0.009601027704775333, 0.018174340948462486, -0.0065381648018956184, 0.0154157355427742, 0.005787661764770746, -0.013089852407574654, -0.006771429441869259, 0.021568506956100464, 0.015943115577101707, -0.0030087728518992662, -0.04962784796953201, 0.020108068361878395, 0.01374569721519947, -0.033563029021024704, -0.016294702887535095, 0.012893774546682835, -0.031453508883714676, 0.0035091082099825144, -0.010202782228589058, 0.01355638075619936, 0.008607118390500546, 0.010615221224725246, 0.008458370342850685, -0.006463790778070688, -0.010885672643780708, -0.0075591192580759525, -0.002469560131430626, -0.01893160492181778, 0.002569289179518819, -0.002359689213335514], 'Id': 'V2hhdCBhcmUgdGhlIGRpZmZlcmVudCBwcm9kdWN0IGNhdGVnb3JpZXMgd2UgaGF2ZT8='}\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Request URL: 'https://open-ai-vector-db.search.windows.net/indexes('text-2-sql-query-cache-index')/docs/search.index?api-version=REDACTED'\n", + "Request method: 'POST'\n", + "Request headers:\n", + " 'Content-Type': 'application/json'\n", + " 'Content-Length': '69870'\n", + " 'api-key': 'REDACTED'\n", + " 'Accept': 'application/json;odata.metadata=none'\n", + " 'x-ms-client-request-id': '42d1cf96-7141-11ef-99b1-0242ac110002'\n", + " 'User-Agent': 'azsdk-python-search-documents/11.6.0b4 Python/3.12.3 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36)'\n", + "A body is sent with the request\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 200\n", + "Response headers:\n", + " 'Transfer-Encoding': 'chunked'\n", + " 'Content-Type': 'application/json; odata.metadata=none; odata.streaming=true; charset=utf-8'\n", + " 'Content-Encoding': 'REDACTED'\n", + " 'Vary': 'REDACTED'\n", + " 'Server': 'Microsoft-IIS/10.0'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Preference-Applied': 'REDACTED'\n", + " 'OData-Version': 'REDACTED'\n", + " 'request-id': '42d1cf96-7141-11ef-99b1-0242ac110002'\n", + " 'elapsed-time': 'REDACTED'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Date': 'Thu, 12 Sep 2024 19:57:38 GMT'\n" + ] + } + ], + "source": [ + "await ask_question(\"What are the different product categories we have?\", history)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-03-15-preview \"HTTP/1.1 200 OK\"\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Request URL: 'https://open-ai-vector-db.search.windows.net/indexes('text-2-sql-query-cache-index')/docs/search.post.search?api-version=REDACTED'\n", + "Request method: 'POST'\n", + "Request headers:\n", + " 'Content-Type': 'application/json'\n", + " 'Content-Length': '34709'\n", + " 'api-key': 'REDACTED'\n", + " 'Accept': 'application/json;odata.metadata=none'\n", + " 'x-ms-client-request-id': '56c2da5e-7141-11ef-99b1-0242ac110002'\n", + " 'User-Agent': 'azsdk-python-search-documents/11.6.0b4 Python/3.12.3 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36)'\n", + "A body is sent with the request\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 200\n", + "Response headers:\n", + " 'Transfer-Encoding': 'chunked'\n", + " 'Content-Type': 'application/json; odata.metadata=none; odata.streaming=true; charset=utf-8'\n", + " 'Content-Encoding': 'REDACTED'\n", + " 'Vary': 'REDACTED'\n", + " 'Server': 'Microsoft-IIS/10.0'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Preference-Applied': 'REDACTED'\n", + " 'OData-Version': 'REDACTED'\n", + " 'request-id': '56c2da5e-7141-11ef-99b1-0242ac110002'\n", + " 'elapsed-time': 'REDACTED'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Date': 'Thu, 12 Sep 2024 19:58:11 GMT'\n", + "INFO:root:Results: [{'Question': 'What are the different product categories we have?', 'Query': 'SELECT DISTINCT ProductCategoryName FROM SalesLT.vGetAllCategories;', 'Schemas': [{'Entity': 'vGetAllCategories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}]}], '@search.score': 0.05000000447034836, '@search.reranker_score': 2.3059513568878174, '@search.highlights': None, '@search.captions': None}]\n", + "INFO:root:Question: How many different product categories do we have?\n", + "INFO:semantic_kernel.functions.kernel_function:Function ChatBot-Chat invoking.\n", + "INFO:semantic_kernel.contents.chat_history:Could not parse prompt \n", + "As a senior analyst, your primary responsibility is to provide precise and thorough answers to the user's queries. Utilize all the provided functions to craft your responses. You must deliver detailed and accurate final answers with clear explanations and actionable insights.\n", + "\n", + "Always use the provided functions to obtain key information in order to answer the question.\n", + "If you are asked to use always use a function, you must use that function to compliment the answer.\n", + "Always use multiple functions to formulate the answer.\n", + "Always execute multiple functions in parallel to compliment the results.\n", + "\n", + "The response to the user must meet the requirements in RESPONSE OUTPUT REQUIREMENTS.\n", + "IMPORTANT INFORMATION contains useful information that you can use to aid your knowledge.\n", + "CHAT HISTORY contains the previous question and answer pairs in the conversation in JSON format. Do not use this information to answer the question, but to provide context on what was asked previously.\n", + "\n", + "[IMPORTANT INFORMATION]\n", + "\n", + "\n", + " [SQL DATABASE INFORMATION]\n", + " First look at the cached queries, SQL templates and schemas to see if you can use them to formulate a SQL query. If you can't find a suitable query, use the 'GetEntitySchema()' function to search for the most relevant schemas for the data that you wish to obtain.\n", + "\n", + " [BEGIN QUERY CACHE]\n", + " [{'Question': 'What are the different product categories we have?', 'Query': 'SELECT DISTINCT ProductCategoryName FROM SalesLT.vGetAllCategories;', 'Schemas': [{'Entity': 'vGetAllCategories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}]}], '@search.score': 0.05000000447034836, '@search.reranker_score': 2.3059513568878174, '@search.highlights': None, '@search.captions': None}]\n", + " [END QUERY CACHE]\n", + " \n", + "\n", + " Use the 'RunSQLQuery()' function to run the SQL query against the database.\n", + "\n", + " Output corresponding text values in the answer for columns where there is an ID. For example, if the column is 'ProductID', output the corresponding 'ProductModel' in the response. Do not include the ID in the response.\n", + " If a user is asking for a comparison, always compare the relevant values in the database.\n", + "\n", + " The target database engine is Microsoft TSQL Server, SQL queries must be able compatible to run on Microsoft TSQL Server. \n", + " The following Microsoft TSQL Server Syntax rules must be adhered to.\n", + " Use TOP X to limit the number of rows returned instead of LIMIT X. NEVER USE LIMIT X as it produces a syntax error.\n", + " You must only provide SELECT SQL queries.\n", + " For a given entity, use the 'SelectFromEntity' property returned in the schema in the SELECT FROM part of the SQL query. If the property is {'SelectFromEntity': 'test_schema.test_table'}, the select statement will be formulated from 'SELECT <VALUES> FROM test_schema.test_table WHERE <CONDITION>.\n", + "\n", + " If you don't know how the value is formatted in a column, run a query against the column to get the unique values that might match your query.\n", + " Some columns in the schema may have the properties 'AllowedValues' or 'SampleValues'. Use these values to determine the possible values that can be used in the SQL query.\n", + "\n", + " The source title to cite is the 'EntityName' property. The source reference is the SQL query used. The source chunk is the result of the SQL query used to answer the user query in Markdown table format. e.g. { 'title': "vProductAndDescription", 'chunk': '| ProductID | Name | ProductModel | Culture | Description |\\n|-----------|-------------------|--------------|---------|----------------------------------|\\n| 101 | Mountain Bike | MT-100 | en | A durable bike for mountain use. |\\n| 102 | Road Bike | RB-200 | en | Lightweight bike for road use. |\\n| 103 | Hybrid Bike | HB-300 | fr | V\u00e9lo hybride pour usage mixte. |\\n', 'reference': 'SELECT ProductID, Name, ProductModel, Culture, Description FROM vProductAndDescription WHERE Culture = "en";' }\n", + " [END SQL DATABASE INFORMATION]\n", + " \n", + "\n", + "[END IMPORTANT INFORMATION]\n", + "\n", + "[RESPONSE OUTPUT REQUIREMENTS]\n", + "\n", + " The answer MUST be returned in JSON format as { \"answer\": \"\", \"sources\": [ {\"title\": , \"chunk\": , \"reference\": \"\"}, {\"title\": , \"chunk\": , \"reference\": \"\"} ], \"schemas\": [ ] }.\n", + "\n", + " The 'answer' property MUST meet the requirements in the ANSWER PROPERTY REQUIREMENTS.\n", + " The 'sources' property MUST meet the requirements in the SOURCES PROPERTY REQUIREMENTS.\n", + " The 'schemas' property MUST meet the requirements in the SCHEMAS PROPERTY REQUIREMENTS.\n", + "\n", + " Do NOT return anything outside of the provided JSON property. Ensure that this is valid JSON returned.\n", + "\n", + " Never return an empty response or null value. Always answer the question.\n", + "\n", + " [ANSWER PROPERTY REQUIREMENTS]\n", + " 1. Language and Tone:\n", + " Use only British English throughout the response.\n", + " Employ a business-friendly language that is professional and easy to understand.\n", + "\n", + " 2. Content Restrictions:\n", + " Do not use any profanity, offensive language, hate speech, or code in the response.\n", + " If you encounter any such content, handle it gracefully by omitting or rephrasing it appropriately.\n", + "\n", + " 3. Information Sources:\n", + " Use only information from the provided functions and specified important information.\n", + " Do not use any external sources or the chat history for constructing the response.\n", + " In case of conflicting information, prioritize data from the SQL Database as the primary source of truth.\n", + "\n", + " 4. Calculations:\n", + " For any required calculations, use only the values provided in the context.\n", + " Provide a brief, clear explanation of the calculations beneath the results.\n", + "\n", + " 5. Response Structure:\n", + " Ensure the response is direct, easy to understand, and well-structured.\n", + " Format the response using Markdown for clarity and readability.\n", + " Use bold sub-headings for clarity where needed. Only use Markdown headings Level 3 (###) and Level 4 (####).\n", + " Use bullet points or numbered lists when appropriate.\n", + " Do not vary the font size within the same sentence.\n", + "\n", + " 6. Citations:\n", + " All factual information used in the answer must be cited with numbered references. For example, [1] should be used to refer to the first source.\n", + " Each citation in the answer must correspond to a single entry in the 'sources' object.\n", + " The same citation and corresponding context chunk may be used multiple times if needed.\n", + " Place the numbered citation at the end of each relevant sentence that uses information from the sources.\n", + " Ensure that each source listed in the 'sources' property is cited at least once in the answer.\n", + " Do not provide a list of definitions from the business glossary; use such information only to enhance the answer contextually.\n", + "\n", + " 7. Citations Format:\n", + " Citations should be embedded within the text, not as a separate list at the end of the 'answer' property.\n", + " [END ANSWER PROPERTY REQUIREMENTS]\n", + "\n", + " [SCHEMAS PROPERTY REQUIREMENTS]\n", + " 1. Inclusion Criteria:\n", + " If you used a schema obtained from 'GetEntitySchemas' function, it must be returned in the 'schemas' property. The 'schemas' property should contain a list of all the schemas used to create the SQL query.\n", + "\n", + " 3. Schema Format:\n", + " Each schema entry should be formatted as: {\"Entity\": \"\", \"Columns\", [ {\"Name\": \"\", \"Definition\": , \"Type\": \"\" } ]}. This is the same format as the 'GetEntitySchemas' function output. Simply copy the schema from the function output to the 'schemas' property and remove the not needed properties.\n", + "\n", + " [END SCHEMAS PROPERTY REQUIREMENTS]\n", + "\n", + " [SOURCES PROPERTY REQUIREMENTS]\n", + " 1. Reference Inclusion:\n", + " Include all corresponding references for all cited content in the 'answer' property.\n", + " Place the references in the 'sources' property.\n", + "\n", + " 2. Source Format:\n", + " Each entry in the 'sources' property must be formatted as: {\"title\": \"\", \"chunk\": \"\", \"reference\": \"\"}\n", + " For example, a complete response with two citations would be formatted as: { \"answer\": \"\", \"sources\": [ {\"title\": , \"chunk\": , \"reference\": \"\"}, {\"title\": , \"chunk\": , \"reference\": \"\"} ] }\n", + "\n", + " 3. Source Chunk:\n", + " The 'chunk' property should contain a concise, unedited snippet of the relevant context that supports the answer.\n", + "\n", + " 4. Mandatory References:\n", + " Ensure that every citation in the 'answer' has a corresponding entry in the 'sources' property.\n", + " Every entry in the 'sources' property must be cited at least once in the answer.\n", + " [END SOURCES PROPERTY REQUIREMENTS]\n", + "\n", + "[END RESPONSE OUTPUT REQUIREMENTS]\n", + "\n", + "What are the different product categories we have?\n", + "How many different product categories do we have? as xml, treating as text, error was: not well-formed (invalid token): line 46, column 78\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-02-01 \"HTTP/1.1 200 OK\"\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_handler:OpenAI usage: CompletionUsage(completion_tokens=71, prompt_tokens=2270, total_tokens=2341)\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion_base:processing 2 tool calls in parallel.\n", + "INFO:semantic_kernel.kernel:Calling SQL-GetEntitySchema function with args: {\"text\": \"product categories\"}\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-GetEntitySchema invoking.\n", + "INFO:semantic_kernel.kernel:Calling SQL-RunSQLQuery function with args: {\"sql_query\": \"SELECT COUNT(DISTINCT ProductCategoryName) AS CategoryCount FROM SalesLT.vGetAllCategories;\"}\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-RunSQLQuery invoking.\n", + "INFO:root:Executing SQL Query\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-03-15-preview \"HTTP/1.1 200 OK\"\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Request URL: 'https://open-ai-vector-db.search.windows.net/indexes('text-2-sql-index')/docs/search.post.search?api-version=REDACTED'\n", + "Request method: 'POST'\n", + "Request headers:\n", + " 'Content-Type': 'application/json'\n", + " 'Content-Length': '34744'\n", + " 'api-key': 'REDACTED'\n", + " 'Accept': 'application/json;odata.metadata=none'\n", + " 'x-ms-client-request-id': '578d0e78-7141-11ef-99b1-0242ac110002'\n", + " 'User-Agent': 'azsdk-python-search-documents/11.6.0b4 Python/3.12.3 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36)'\n", + "A body is sent with the request\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 200\n", + "Response headers:\n", + " 'Transfer-Encoding': 'chunked'\n", + " 'Content-Type': 'application/json; odata.metadata=none; odata.streaming=true; charset=utf-8'\n", + " 'Content-Encoding': 'REDACTED'\n", + " 'Vary': 'REDACTED'\n", + " 'Server': 'Microsoft-IIS/10.0'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Preference-Applied': 'REDACTED'\n", + " 'OData-Version': 'REDACTED'\n", + " 'request-id': '578d0e78-7141-11ef-99b1-0242ac110002'\n", + " 'elapsed-time': 'REDACTED'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Date': 'Thu, 12 Sep 2024 19:58:12 GMT'\n", + "INFO:root:Results: [{'Description': 'This view provides a comprehensive list of all product categories and their corresponding subcategories in the SalesLT schema of the AdventureWorksLT database. It is used to understand the hierarchical structure of product categories, facilitating product organization and categorization.', 'Entity': 'vGetAllCategories', 'EntityName': 'Get All Categories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.03333333507180214, '@search.reranker_score': 2.812040328979492, '@search.highlights': None, '@search.captions': None}, {'Description': 'This view provides detailed catalog information about product models, including descriptions, manufacturing details, warranty information, and specifications related to product design and features. It is useful for generating comprehensive product catalogs and providing detailed product information to customers.', 'Entity': 'vProductModelCatalogDescription', 'EntityName': 'Product Model Catalog Description', 'Columns': [{'Name': 'ProductModelID', 'Definition': 'A unique identifier for each product model. This ID is used to distinguish different product models.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Name', 'Definition': 'The name of the product model, providing a recognizable title for each model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Summary', 'Definition': 'A brief summary of the product model, highlighting key features and characteristics.', 'Type': 'NVARCHAR(MAX)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Manufacturer', 'Definition': 'The name of the manufacturer of the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Copyright', 'Definition': 'Copyright information related to the product model, indicating the legal ownership of the product design and content.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductURL', 'Definition': 'The URL for the product model, providing a link to more information or to purchase the product.', 'Type': 'NVARCHAR(256)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'WarrantyPeriod', 'Definition': 'The duration of the warranty period for the product model, specifying how long the warranty is valid.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'WarrantyDescription', 'Definition': 'A description of the warranty provided for the product model, detailing what is covered under the warranty.', 'Type': 'NVARCHAR(255)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'NoOfYears', 'Definition': 'The number of years the warranty is valid for the product model.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'MaintenanceDescription', 'Definition': 'A description of the maintenance requirements and recommendations for the product model.', 'Type': 'NVARCHAR(MAX)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Wheel', 'Definition': 'Details about the type of wheels used in the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Saddle', 'Definition': 'Information about the saddle of the product model, such as material and design.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Pedal', 'Definition': 'Details regarding the pedal design and specifications of the product model.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'BikeFrame', 'Definition': 'Description of the bike frame used in the product model, including material and type.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Crankset', 'Definition': 'Information about the crankset of the product model, specifying its design and features.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PictureAngle', 'Definition': 'The angle at which the product model is photographed, providing a visual perspective of the product.', 'Type': 'NVARCHAR(20)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PictureSize', 'Definition': \"The size of the product model's picture, specifying dimensions or resolution.\", 'Type': 'NVARCHAR(20)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductPhotoID', 'Definition': 'An identifier linking to the product photo, which provides a visual representation of the product model.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Material', 'Definition': 'The material used in the construction of the product model, indicating durability and quality.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Color', 'Definition': 'The color of the product model, providing information about the appearance of the product.', 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductLine', 'Definition': 'A code representing the product line to which the model belongs, categorizing the product within a broader product range.', 'Type': 'NVARCHAR(2)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Style', 'Definition': 'The style of the product model, indicating design and aesthetic aspects.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'RiderExperience', 'Definition': \"A description of the target rider's experience level for which the product model is designed, such as beginner, intermediate, or expert.\", 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the product model information was last modified, indicating the currency of the data.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.032786883413791656, '@search.reranker_score': 1.9153262376785278, '@search.highlights': None, '@search.captions': None}, {'Description': 'This view provides detailed information about products, including their names, associated product models, descriptions, and the specific culture or language of the description. It is useful for understanding product details and translating product descriptions for different cultures.', 'Entity': 'vProductAndDescription', 'EntityName': 'Product and Description', 'Columns': [{'Name': 'ProductID', 'Definition': 'A unique identifier for each product. This ID is used to distinguish individual products.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Name', 'Definition': 'The name of the product. This provides a brief and identifiable name for each product.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ProductModel', 'Definition': 'The model name associated with the product. This indicates the specific model type or version of the product.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Culture', 'Definition': \"The culture or language code for the product description. This is used to localize the product description, such as 'en' for English or 'fr' for French.\", 'Type': 'NVARCHAR(6)', 'AllowedValues': None, 'SampleValues': '[\"en\",\"fr\",\"es\",\"de\"]'}, {'Name': 'Description', 'Definition': 'A detailed description of the product. This text provides additional information about the product, which can vary based on the culture or language.', 'Type': 'NVARCHAR(400)', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.032258063554763794, '@search.reranker_score': 1.8641046285629272, '@search.highlights': None, '@search.captions': None}, {'Description': 'This table contains high-level information about sales orders, including order dates, customer details, shipping information, and order status. It is used to manage and track sales orders from initiation to fulfillment.', 'Entity': 'SalesOrderHeader', 'EntityName': 'Sales Order Header', 'Columns': [{'Name': 'SalesOrderID', 'Definition': 'A unique identifier for each sales order. This ID is auto-generated and serves as the primary key for the SalesOrderHeader table.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'OrderDate', 'Definition': 'The date and time when the sales order was created. This field is used to track when the order was initiated.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'DueDate', 'Definition': 'The date by which the order is expected to be fulfilled or delivered. It helps in managing delivery timelines.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipDate', 'Definition': 'The date when the order was shipped to the customer. This is used for tracking shipping and fulfillment status.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Status', 'Definition': 'The current status of the order, represented as a numeric code (e.g., 1 for In Progress, 2 for Completed, 3 for Canceled).', 'Type': 'TINYINT', 'AllowedValues': '[1,2,3]', 'SampleValues': None}, {'Name': 'OnlineOrderFlag', 'Definition': 'Indicates whether the order was placed online.', 'Type': 'BIT', 'AllowedValues': '[\"True\",\"False\"]', 'SampleValues': None}, {'Name': 'SalesOrderNumber', 'Definition': 'A unique order number assigned to the sales order. This is used for tracking and identification purposes.', 'Type': 'NVARCHAR(25)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PurchaseOrderNumber', 'Definition': \"The purchase order number provided by the customer. This field links the sales order to the customer's purchase order.\", 'Type': 'NVARCHAR(25)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'AccountNumber', 'Definition': \"The account number of the customer placing the order. This helps link the order to the customer's account.\", 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'CustomerID', 'Definition': 'A foreign key that links to the Customer table, representing the customer who placed the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipToAddressID', 'Definition': 'A foreign key that links to the Address table, representing the shipping address for the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'BillToAddressID', 'Definition': 'A foreign key that links to the Address table, representing the billing address for the order.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ShipMethod', 'Definition': 'The shipping method used for the order (e.g., UPS, FedEx). This field helps track shipping preferences.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'SubTotal', 'Definition': 'The total cost of the order before taxes and shipping charges. This field is used to calculate the final total. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'TaxAmt', 'Definition': 'The tax amount applied to the order. This is calculated based on the order subtotal and applicable tax rates. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Freight', 'Definition': 'The shipping charge applied to the order. This field represents the cost of shipping the order to the customer. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'TotalDue', 'Definition': 'The total amount due for the order, including all line items, taxes, and shipping charges. The currency is pound sterling (GBP).', 'Type': 'MONEY', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'Comment', 'Definition': 'Any additional comments or notes related to the sales order. This field can include special instructions or remarks.', 'Type': 'NVARCHAR(255)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the sales order header record was last modified. This is used for tracking updates and changes to the order.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.01587301678955555, '@search.reranker_score': 0.9990808367729187, '@search.highlights': None, '@search.captions': None}, {'Description': 'This table stores address information for customers, including street addresses, city, state, postal code, and country/region. It is used to maintain contact and shipping information for orders, as well as to manage customer locations.', 'Entity': 'Address', 'EntityName': 'Address', 'Columns': [{'Name': 'AddressID', 'Definition': 'A unique identifier for each address. This ID is auto-generated and serves as the primary key for the Address table.', 'Type': 'INT', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'City', 'Definition': 'The city in which the address is located. This is used to specify the city for the address.', 'Type': 'NVARCHAR(30)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'StateProvince', 'Definition': 'The state or province in which the address is located. This is used to specify the state or province for the address.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'CountryRegion', 'Definition': 'The country or region in which the address is located. This is used to specify the country or region for the address.', 'Type': 'NVARCHAR(50)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'PostalCode', 'Definition': 'The postal code associated with the address. This is used to specify the postal code for the address, which helps in geographical sorting and shipping.', 'Type': 'NVARCHAR(15)', 'AllowedValues': None, 'SampleValues': None}, {'Name': 'ModifiedDate', 'Definition': 'The date and time when the address record was last modified. This is used for tracking updates and changes to the address information.', 'Type': 'DATETIME', 'AllowedValues': None, 'SampleValues': None}], '@search.score': 0.015625, '@search.reranker_score': 0.289828360080719, '@search.highlights': None, '@search.captions': None}]\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-GetEntitySchema succeeded.\n", + "INFO:semantic_kernel.functions.kernel_function:Function completed. Duration: 0.398460s\n", + "INFO:semantic_kernel.functions.kernel_function:Function SQL-RunSQLQuery succeeded.\n", + "INFO:semantic_kernel.functions.kernel_function:Function completed. Duration: 0.921846s\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/gpt-4o/chat/completions?api-version=2024-02-01 \"HTTP/1.1 200 OK\"\n", + "INFO:semantic_kernel.connectors.ai.open_ai.services.open_ai_handler:OpenAI usage: CompletionUsage(completion_tokens=295, prompt_tokens=5924, total_tokens=6219)\n", + "INFO:semantic_kernel.functions.kernel_function:Function ChatBot-Chat succeeded.\n", + "INFO:semantic_kernel.functions.kernel_function:Function completed. Duration: 5.030412s\n", + "INFO:root:Answer: { \n", + " \"answer\": \"We have a total of 37 distinct product categories in our database [1].\", \n", + " \"sources\": [ \n", + " { \n", + " \"title\": \"Get All Categories\", \n", + " \"chunk\": \"| CategoryCount |\\n|---------------|\\n| 37 |\\n\", \n", + " \"reference\": \"SELECT COUNT(DISTINCT ProductCategoryName) AS CategoryCount FROM SalesLT.vGetAllCategories;\" \n", + " } \n", + " ], \n", + " \"schemas\": [ \n", + " { \n", + " \"Entity\": \"vGetAllCategories\", \n", + " \"Columns\": [ \n", + " { \n", + " \"Name\": \"ProductCategoryID\", \n", + " \"Definition\": \"A unique identifier for each product category. This ID is used to reference specific categories.\", \n", + " \"Type\": \"INT\" \n", + " }, \n", + " { \n", + " \"Name\": \"ParentProductCategoryName\", \n", + " \"Definition\": \"The name of the parent product category. This represents the top-level category under which subcategories are grouped.\", \n", + " \"Type\": \"NVARCHAR(50)\" \n", + " }, \n", + " { \n", + " \"Name\": \"ProductCategoryName\", \n", + " \"Definition\": \"The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.\", \n", + " \"Type\": \"NVARCHAR(50)\" \n", + " } \n", + " ] \n", + " } \n", + " ] \n", + "}\n", + "INFO:root:Time taken: 5.461877822875977\n" + ] + }, + { + "data": { + "text/markdown": [ + "We have a total of 37 distinct product categories in our database [1]." + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:root:Document: {'Question': 'How many different product categories do we have?', 'Query': 'SELECT COUNT(DISTINCT ProductCategoryName) AS CategoryCount FROM SalesLT.vGetAllCategories;', 'Schemas': [{'Entity': 'vGetAllCategories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT'}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)'}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)'}]}]}\n", + "INFO:root:Vector Fields: {'Question': 'QuestionEmbedding', 'Query': 'QueryEmbedding'}\n", + "INFO:root:Vector Fields: {'Question': 'QuestionEmbedding', 'Query': 'QueryEmbedding'}\n", + "INFO:httpx:HTTP Request: POST https://open-ai-gpt-001.openai.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-03-15-preview \"HTTP/1.1 200 OK\"\n", + "INFO:root:Document with embeddings: {'Question': 'How many different product categories do we have?', 'Query': 'SELECT COUNT(DISTINCT ProductCategoryName) AS CategoryCount FROM SalesLT.vGetAllCategories;', 'Schemas': [{'Entity': 'vGetAllCategories', 'Columns': [{'Name': 'ProductCategoryID', 'Definition': 'A unique identifier for each product category. This ID is used to reference specific categories.', 'Type': 'INT'}, {'Name': 'ParentProductCategoryName', 'Definition': 'The name of the parent product category. This represents the top-level category under which subcategories are grouped.', 'Type': 'NVARCHAR(50)'}, {'Name': 'ProductCategoryName', 'Definition': 'The name of the product category. This can refer to either a top-level category or a subcategory, depending on the context.', 'Type': 'NVARCHAR(50)'}]}], 'QuestionEmbedding': [0.0196035448461771, 0.004998903721570969, -0.001196633093059063, -0.009553460404276848, -0.013075564056634903, 0.0004860045446548611, -0.009037233889102936, 0.008187747560441494, -0.01612718217074871, -0.012859925627708435, 0.003943579737097025, 0.017538638785481453, -0.026085782796144485, 0.0021041138097643852, -0.008344575762748718, 0.027549514546990395, 0.014781072735786438, 0.020832033827900887, -0.011938558891415596, -0.016689151525497437, -0.023955531418323517, 0.0015323437983170152, -0.0009140152833424509, -0.008279230445623398, -0.010520569048821926, 0.009677616879343987, 0.02558916062116623, -0.006776291877031326, 0.0015993225388228893, -0.001930949161760509, 0.006328677758574486, -0.0011206693015992641, -0.02017858251929283, -0.021498553454875946, -0.015578283928334713, 0.020662136375904083, 0.006848171819001436, -0.004730988759547472, 0.003819423960521817, -0.002367128152400255, 0.014702659100294113, 0.024164635688066483, 0.007338260300457478, 0.008573283441364765, -0.003466560272499919, 0.0021825279109179974, -0.013748619705438614, -0.003180675208568573, -0.005034843925386667, 0.016270942986011505, 0.014480485580861568, 0.01692439429461956, -0.019485924392938614, -0.010866898111999035, 0.006697877775877714, 0.019747303798794746, 0.008703974075615406, 0.006057495251297951, 0.0011655940907076001, -0.0011108675971627235, -0.004469608422368765, 0.040017370134592056, -0.022570215165615082, 0.01389237865805626, -0.03123498149216175, -0.032175950706005096, -0.011820937506854534, -0.002396533265709877, -0.003463292960077524, 0.002522322814911604, 0.012448251247406006, 0.028385933488607407, -0.009056837297976017, -0.0073970709927380085, 0.0036331904120743275, -0.006433229893445969, -8.086462185019627e-05, -0.016898255795240402, -0.015173143707215786, 0.017708536237478256, 0.017094291746616364, -0.01152034942060709, -0.007253311574459076, -0.002800039714202285, 0.0196035448461771, -0.011951628141105175, -0.004234365653246641, 0.0509953536093235, -0.002960135228931904, -0.003446956630796194, 0.011605298146605492, 0.01774774305522442, 0.025667574256658554, -0.013160512782633305, 0.00552819948643446, 0.01911999098956585, -0.002064906759187579, 0.0013583622639998794, -0.008664767257869244, -0.0007722979644313455, -0.01301675383001566, -0.011945093050599098, -0.009043768979609013, -0.019329095259308815, 0.001079011824913323, -0.012415578588843346, 0.004100407939404249, -0.0030842910055071115, 0.00013896054588258266, 0.002252774080261588, -0.02345890924334526, 0.02383791096508503, 0.025262434035539627, -0.018505746498703957, 0.005273353774100542, -0.017421016469597816, 0.0165715292096138, -0.0005672776023857296, -0.00878238771110773, -0.013304272666573524, 0.023119114339351654, 0.0131474444642663, 0.030189458280801773, -0.014937900938093662, 0.027941586449742317, -0.00984751433134079, -0.01896316185593605, -0.013219323940575123, 0.009644944220781326, -0.012448251247406006, 0.01915919780731201, 0.007370932959020138, 0.020792827010154724, 0.015944216400384903, -0.0111544169485569, 0.0395207479596138, -0.020152444019913673, 0.04895658418536186, 0.01621866598725319, -0.009442374110221863, 0.020635997876524925, 0.012565872631967068, 0.004688514396548271, 0.019747303798794746, 0.01969502866268158, 0.02456977590918541, 0.02820296585559845, 0.018950093537569046, -0.007050741463899612, 0.003236218588426709, 0.015787387266755104, 0.009180993773043156, 0.03194070979952812, 0.011258969083428383, 0.01534304115921259, -0.010840760543942451, 0.0007433010614477098, 0.005247215274721384, -0.038893431425094604, -0.005573941394686699, 0.007312122266739607, 0.004747325088828802, -0.006848171819001436, -0.00035919412039220333, 0.020662136375904083, 0.025419263169169426, 0.03209753707051277, 0.0013885843800380826, 0.012343699112534523, 0.00013048609253019094, -0.008390316739678383, 0.0010430719703435898, -0.004472875501960516, 0.006547584198415279, 0.004002390429377556, 0.01612718217074871, 0.0018590694526210427, -0.009684151038527489, -0.027706343680620193, -0.005475923418998718, 0.005221077241003513, -0.00873011164367199, 0.0131474444642663, 0.004312779754400253, -0.020230857655405998, 0.00023115846852306277, -3.286401693003427e-07, -0.009723357856273651, 0.016401631757616997, -0.012487458065152168, -0.014768003486096859, 0.026726165786385536, -0.003950114361941814, 0.018126744776964188, -0.6779167056083679, -0.015735112130641937, 0.015356110408902168, -0.03079063445329666, 0.02846434712409973, 0.01074274256825447, 0.012186869978904724, 0.017094291746616364, -0.021367864683270454, 0.02425611950457096, 0.0028229104354977608, -0.006567187607288361, 0.017538638785481453, -0.0029356307350099087, -0.006113038863986731, -0.02313218265771866, 0.012925270944833755, 0.0015740012750029564, -0.013735550455749035, 0.01794377714395523, 0.0016630340833216906, 0.005488992668688297, -0.017669327557086945, -0.00744281243532896, 0.014441277831792831, 0.01352644618600607, 0.019708096981048584, -0.00701153464615345, -0.018427332863211632, 0.0064168935641646385, -0.005299491807818413, 0.019015438854694366, 0.0192768182605505, -0.014950970187783241, 0.037429701536893845, 0.006008486729115248, -0.010860363952815533, 0.02715744450688362, 0.014258312061429024, 0.01625787280499935, -0.04401649162173271, -0.012271818704903126, 0.004172287881374359, -0.003649526508525014, -0.016519254073500633, 0.011938558891415596, 0.01778694987297058, 0.007344794925302267, 0.018179019913077354, -0.012748838402330875, 0.01889781653881073, -0.034815896302461624, -0.003822691272944212, -0.008710508234798908, 0.03463292866945267, 0.002584400586783886, 0.01679370366036892, -0.006050960626453161, 0.002945432672277093, 0.027549514546990395, -0.004649307578802109, 0.003571112407371402, 0.003424085909500718, -0.010043549351394176, -0.031025877222418785, 0.007331725675612688, -0.039468470960855484, -0.0062339273281395435, 5.71770078749978e-06, 0.001337125082500279, -0.0121084563434124, 0.0005178602878004313, -0.030607668682932854, -0.001261161407455802, 0.0046199019998312, -0.002483115764334798, 0.04299710690975189, 0.026307957246899605, -0.01701587624847889, 0.002388365101069212, 0.0005811634473502636, -0.01570897363126278, 0.008984957821667194, 0.005377905908972025, 0.01453276164829731, 0.0024455422535538673, -0.007671520579606295, 0.002073074923828244, 0.012480923905968666, 0.04030488803982735, 0.0006015838007442653, 0.018571091815829277, 0.011807868257164955, -0.016832910478115082, -0.020975792780518532, 0.018636437132954597, -0.013552583754062653, 0.018375055864453316, -0.0031676061917096376, -0.02660854533314705, -0.0024145033676177263, 0.004851877223700285, 0.012376371771097183, 0.006570454686880112, 0.006678274367004633, 0.008560214191675186, -0.006887378636747599, 0.00470158364623785, 0.016401631757616997, -0.031025877222418785, 0.00976909976452589, -0.012467854656279087, -0.016205597668886185, -0.006750153843313456, -0.00980177242308855, -0.01953819952905178, 0.0328294038772583, -0.00021870204363949597, -0.03324761241674423, -0.0012374737998470664, 0.010233050212264061, 0.012546268291771412, 0.017198843881487846, -0.013500307686626911, 0.007122621405869722, 0.00981484167277813, -0.022648628801107407, 0.0027690005954355, -0.009742962196469307, -0.002945432672277093, 0.020675204694271088, -0.012533199973404408, 0.005907201673835516, -0.01956433802843094, -0.017865363508462906, 0.024138499051332474, 0.013101702556014061, -0.02348504588007927, 0.01597035489976406, -0.03659328445792198, -0.00020430568838492036, -0.010951846837997437, -0.020034823566675186, -0.017198843881487846, -0.004564358852803707, -0.010566310957074165, -0.02472660504281521, 0.011847076006233692, 0.0050087058916687965, 0.0018737721256911755, -0.010115428827702999, -0.005309293512254953, -0.0014955870574340224, 0.01387930940836668, 0.0231060441583395, 0.0223088338971138, -0.013258530758321285, -0.03492044657468796, -0.02558916062116623, -0.002463512122631073, 0.008886940777301788, 0.020348479971289635, -0.0007216554949991405, -0.011932024732232094, -0.009076441638171673, 0.0008012948674149811, -0.01343496236950159, 0.03693307936191559, 0.008900009095668793, -0.028830280527472496, 3.540379839250818e-05, -0.01883247122168541, 0.0020077296067029238, 0.009396632201969624, -0.005531467031687498, 0.004071002826094627, -0.009167924523353577, 0.002782069845125079, 0.01265082135796547, -0.019015438854694366, -0.0005595178226940334, 0.013474170118570328, -0.007462415844202042, 0.019995614886283875, 0.009050303138792515, 0.008658232167363167, 0.007423209026455879, -0.0010128498543053865, -0.006145711522549391, 0.02686992473900318, -0.004371590446680784, 0.03703762963414192, -0.0029045918490737677, 0.00889347493648529, -0.022387247532606125, 0.0017806553514674306, 0.000748201971873641, -0.0015380614204332232, -0.015604421496391296, -0.004583962261676788, 0.013539515435695648, 0.01179479993879795, -0.02250486984848976, 0.002819643123075366, 0.024648189544677734, -0.0030842910055071115, -0.0028800873551517725, 0.006207789294421673, 0.03643645718693733, 0.010448689572513103, 0.015225419774651527, 0.008305368945002556, -0.019355233758687973, -0.004822472110390663, -0.008808526210486889, 0.015003246255218983, -0.01953819952905178, 0.009148321114480495, -0.0007522860541939735, 0.008723577484488487, 0.01176212728023529, -0.01212805975228548, -0.0009720090893097222, 0.00787409022450447, -0.024687398225069046, 0.008011315017938614, -0.005988882854580879, 0.02428225800395012, -0.004770196042954922, -0.024060083553195, -0.006302539724856615, -0.0025321245193481445, 0.030189458280801773, 0.009605737403035164, -0.006717481184750795, 0.020518377423286438, 0.031339533627033234, -0.012722700834274292, 0.032489608973264694, 0.024648189544677734, 0.0059006670489907265, 0.026399441063404083, 0.01078848447650671, 0.013787826523184776, 0.030006492510437965, -0.0031267653685063124, 0.012448251247406006, 0.007220638915896416, -0.009311683475971222, 0.002076342236250639, -0.01032453402876854, -0.026843788102269173, -0.027654066681861877, 0.01303635723888874, 0.0040252613835036755, -0.0033979478757828474, -0.008344575762748718, 0.010572845116257668, -0.008076660335063934, 0.017930708825588226, 0.01838812418282032, 0.006563920062035322, 0.02607271447777748, -0.011827471666038036, 0.02157696895301342, 0.025484608486294746, -0.01854495331645012, 0.002001195214688778, 0.0140230692923069, -0.022517938166856766, 0.00560007942840457, 0.0011949994368478656, 0.01730339601635933, -0.015055522322654724, -0.003368542529642582, 0.019263749942183495, 0.010553241707384586, 0.0009564896463416517, -0.01909385249018669, 0.0167283583432436, -0.015604421496391296, -0.030189458280801773, -0.01685904897749424, 0.003321167314425111, -0.003642992116510868, -0.0008829763391986489, -0.004489211831241846, -0.019734235480427742, -0.027575653046369553, 0.017643190920352936, 0.01679370366036892, 0.02705289237201214, -0.016597667708992958, -0.0009009462664835155, 0.006900447886437178, -0.003058152971789241, 0.019734235480427742, -0.018414262682199478, 0.009141786023974419, 0.0148986941203475, 0.002287080278620124, 0.00011445611016824841, 0.003995855804532766, -0.01217380166053772, 0.02556302212178707, 0.0005272536654956639, -0.025223227217793465, -0.016937462612986565, -0.014402071014046669, -0.034815896302461624, 0.004499013535678387, -0.0029486999846994877, -0.0003763472195714712, 0.0046199019998312, 0.022152004763484, 0.014872555620968342, -0.007390536367893219, 0.008599421940743923, 0.022230420261621475, 0.012402509339153767, -0.0007506523979827762, -0.020413825288414955, 0.009971669875085354, -0.0014416773337870836, 0.050943080335855484, 0.006309074349701405, -0.03672397509217262, 0.03340443968772888, -0.020766688510775566, -0.018244365230202675, -0.017643190920352936, -0.01126550417393446, 0.015539076179265976, 0.003074489301070571, -0.03852749988436699, -0.00704420730471611, 0.003040183102712035, -0.008592886850237846, 0.018218228593468666, 0.0021253509912639856, 0.0021057473495602608, -0.01072313915938139, -0.017421016469597816, -0.009586133062839508, 0.008553680032491684, 0.006420161109417677, 0.012748838402330875, 0.032620299607515335, -0.0035188363399356604, 0.0022397050634026527, 0.043232351541519165, 0.026216473430395126, 0.008233488537371159, -0.0026252414099872112, -0.002017531543970108, 0.0019652554765343666, 0.00206327298656106, 0.007586571853607893, -0.011690246872603893, 0.004267038311809301, -0.015055522322654724, 0.006207789294421673, 0.03021559678018093, 0.00034959655022248626, 0.011141347698867321, 0.004910687915980816, -0.004564358852803707, -0.009520788677036762, 0.004146149847656488, 0.012533199973404408, -0.010729673318564892, 0.008971888571977615, 0.027706343680620193, -0.003463292960077524, -0.005025042220950127, 0.004185356665402651, -0.016401631757616997, 0.009710289537906647, 0.005488992668688297, -0.00508385244756937, -0.010252653621137142, -0.005822252947837114, -0.0231060441583395, -0.05985615774989128, 0.0001528463908471167, 0.014676520600914955, 0.01790457032620907, -0.010925709269940853, -0.011376590467989445, -0.01867564395070076, -0.02115875855088234, -0.028856417164206505, -0.026490923017263412, -0.026464786380529404, -0.015173143707215786, -0.02667389065027237, -0.0178522951900959, -0.027941586449742317, 0.013363082893192768, 0.014663451351225376, 0.009350891225039959, -0.006880844011902809, -0.0018688712734729052, 0.016532322391867638, -0.0037540788762271404, -0.03157477453351021, -0.009481580927968025, -0.03358740732073784, -0.01105639897286892, 0.017447154968976974, -0.016845978796482086, 0.0014032870531082153, -0.010540172457695007, 0.005126326810568571, -0.011435401625931263, -0.012121525593101978, 0.026843788102269173, -0.014950970187783241, 0.013140909373760223, -0.0002754706365521997, -0.008220420219004154, 0.001852534944191575, -0.007037672679871321, -0.02027006447315216, 0.013774757273495197, -0.003845561994239688, -0.011990834958851337, -0.029170075431466103, -0.014794141985476017, 0.015656698495149612, 0.016362424939870834, -0.02966669760644436, 0.011879747733473778, 0.0037736822851002216, 0.016140252351760864, -0.012729234993457794, 0.017264189198613167, -0.009030699729919434, 0.009756030514836311, 0.014349794946610928, 0.025288572534918785, 0.010304929688572884, -0.0031153298914432526, -0.009069906547665596, 0.01574818044900894, -0.004044864792376757, 0.005809183698147535, -0.006420161109417677, -0.04213455319404602, 0.01889781653881073, -0.020858172327280045, -0.023511184379458427, -0.014689589850604534, 0.001707141986116767, -0.0035809141118079424, 0.025262434035539627, -0.02718358300626278, -0.029849663376808167, -0.032045260071754456, 0.0031104290392249823, -0.022387247532606125, 0.019172266125679016, -0.007906762883067131, -0.01832278072834015, -0.03230664134025574, -0.005472656339406967, -0.021746866405010223, -0.015147005207836628, -0.03478975594043732, -0.03353513032197952, 0.001911345636472106, 0.026399441063404083, -0.0165715292096138, 0.011840540915727615, 0.002608905080705881, -0.015212350524961948, -0.015761250630021095, -0.009658013470470905, -0.01723805069923401, -0.033927202224731445, 0.008573283441364765, -0.0253408495336771, 0.012239146046340466, 0.03703762963414192, 0.013474170118570328, -0.013284669257700443, 0.01962968334555626, 0.008507938124239445, -0.0049335588701069355, 0.009932463057339191, 0.004672178067266941, 0.0014163560699671507, -0.021877555176615715, -0.0005832054303027689, -0.004776730202138424, -0.0004888633848167956, 0.017407948151230812, 0.010808087885379791, 0.01395772397518158, 0.03348285332322121, -0.027366548776626587, -0.020897379145026207, -0.025693712756037712, -0.006001952104270458, -0.015225419774651527, -0.017133498564362526, -0.015225419774651527, 0.01774774305522442, -0.016297079622745514, 0.0044663408771157265, 0.009481580927968025, -0.0012480923905968666, -0.00464604003354907, 0.020165512338280678, 0.042082276195287704, 0.0025909352116286755, 0.02253100834786892, 0.0021335191559046507, 0.009520788677036762, -0.0223088338971138, -0.023027630522847176, -0.02922235056757927, -0.028699589893221855, -0.015617490746080875, -0.0022772785741835833, 0.028385933488607407, -0.0013493773294612765, 0.003324434394016862, -0.010317998938262463, 0.012513596564531326, -0.019302956759929657, -0.020243927836418152, -0.00787409022450447, -0.009279010817408562, -0.017185773700475693, -0.00831843726336956, -0.03515569120645523, -0.021916763857007027, 0.004495746456086636, 0.004900886211544275, -0.033927202224731445, 0.017068153247237206, -0.012435181997716427, -0.017185773700475693, -0.003881501965224743, -0.005064249038696289, 0.04085378721356392, -0.0008364178938791156, 0.023432770743966103, 0.04095834121108055, 0.015617490746080875, -0.006162047386169434, -0.02514481358230114, -0.009076441638171673, -0.01998254656791687, 0.043807387351989746, 0.019577406346797943, -0.006782826501876116, -0.011278572492301464, -0.01029186137020588, 0.0022544076200574636, -0.013827033340930939, -0.02747110091149807, 0.0029127600137144327, 0.005384440533816814, 0.027863170951604843, -0.0010332701494917274, -0.0063678850419819355, 0.008592886850237846, 0.01024611946195364, -0.0018182287458330393, 0.007292518857866526, 0.00037981869536451995, -0.011409263126552105, -0.021080344915390015, 0.03575686737895012, -0.02131558768451214, 0.007351329550147057, -0.00299934227950871, -0.010468292981386185, 0.007194500882178545, -0.0032215157989412546, 0.0036952681839466095, -0.003097360022366047, -0.00014355512394104153, 0.010239585302770138, 0.01250706147402525, 0.025262434035539627, 0.01300368458032608, -0.006854705978184938, -0.026791511103510857, -0.007285984233021736, 0.002925829030573368, 0.023027630522847176, -0.004567625932395458, -0.023158321157097816, 0.002991174114868045, 0.011402728967368603, 0.017198843881487846, -0.0033979478757828474, -0.019198404625058174, 0.002765733515843749, -0.026490923017263412, -0.005341966170817614, 0.020544515922665596, -0.008984957821667194, -0.007651917170733213, 0.002354058902710676, -0.008540610782802105, -0.005694829858839512, -0.038292258977890015, -0.01024611946195364, 0.02253100834786892, -0.025928955525159836, -0.013866241089999676, -0.00645283330231905, 0.03238505497574806, -0.01874098926782608, 0.009298615157604218, -0.03288168087601662, 0.011298175901174545, -0.0033391371835023165, -0.009396632201969624, -0.0029307298827916384, 0.007913297973573208, -0.00232628732919693, -0.03444996103644371, -0.0030140450689941645, -0.006139176897704601, -0.01861029863357544, 0.01082115713506937, -0.0070180692709982395, -0.021184897050261497, 0.0032247831113636494, -0.001997927902266383, -0.018440401181578636, -0.0065345149487257, -0.010866898111999035, -0.0050413780845701694, -0.008344575762748718, 0.013127840124070644, -0.012480923905968666, -0.0012480923905968666, 0.017159637063741684, -0.03484203293919563, 0.0012938339496031404, 0.00560007942840457, -0.007606175262480974, 0.01547373179346323, -0.004309512674808502, -0.011311245150864124, -0.0026301422622054815, -0.004329116083681583, -0.013232393190264702, -0.01108907163143158, -0.004361788742244244, 0.014362864196300507, -0.010814622044563293, -0.017603984102606773, -0.0056915623135864735, 0.006325410678982735, 0.003669130150228739, 0.00838378258049488, -0.01998254656791687, -0.0016573163447901607, 0.024582846090197563, 0.016427770256996155, 0.004534953273832798, -0.008605956099927425, -0.030633805319666862, -0.018754057586193085, -0.008932681754231453, -0.022609421983361244, -0.019485924392938614, -0.0035776470322161913, 0.038736604154109955, -0.001443310989998281, -0.012918735854327679, -0.009932463057339191, 0.014062276110053062, -0.012369836680591106, -0.028960971161723137, 0.019655821844935417, 0.008135471493005753, 0.009971669875085354, 0.013363082893192768, -0.016754496842622757, 0.019747303798794746, -0.00799824669957161, -0.005208008456975222, -0.008194281719624996, 0.009076441638171673, 0.007782607339322567, -0.011415797285735607, 0.0070050000213086605, -0.019106920808553696, -0.01534304115921259, -0.01787843368947506, 0.012467854656279087, 0.011049864813685417, -0.007619244512170553, 0.019420579075813293, -0.00232628732919693, -0.005655622575432062, 0.003610319457948208, 0.023798704147338867, 0.017355671152472496, 0.02492263913154602, 0.0034175512846559286, -0.04263117536902428, -0.0020894112531095743, -0.006273134145885706, -0.0014147225301712751, 0.004753859713673592, -0.02087124064564705, -0.003567845094949007, -0.004472875501960516, 0.011539953760802746, -0.0040252613835036755, -0.007259846199303865, -0.011258969083428383, -0.003388145938515663, -0.009442374110221863, 0.006325410678982735, -0.002733060857281089, 0.01344803161919117, 0.02625568024814129, -0.007240242790430784, 0.0030532521195709705, -0.021720727905631065, 0.014728796668350697, 0.004760394338518381, -0.00016366917407140136, -0.006122840568423271, 0.013866241089999676, -0.018845541402697563, -0.00461336737498641, -0.008338040672242641, 0.0012538100127130747, -0.018179019913077354, -0.03178388252854347, -0.010664328001439571, 0.01962968334555626, 0.0036789318546652794, -0.012435181997716427, -0.010259188711643219, 0.003930510953068733, -0.00601502088829875, -0.0032100805547088385, -0.021080344915390015, 0.00463623832911253, -0.0030369157902896404, -0.005335431545972824, 0.027288135141134262, -0.020675204694271088, -0.0038978380616754293, -0.0012031676014885306, 0.01547373179346323, 0.007926366291940212, 0.030320148915052414, 0.21621403098106384, 0.017198843881487846, -0.01606183685362339, 0.036567144095897675, 0.038710467517375946, -0.001502121682278812, 0.02383791096508503, 0.010631656274199486, 0.009579598903656006, 0.010095825418829918, 0.014702659100294113, 0.004499013535678387, 0.009723357856273651, 0.008801992051303387, 0.010010876692831516, -0.014441277831792831, -0.03708990663290024, -0.02425611950457096, -0.01034413743764162, 0.04051399230957031, 0.026242611929774284, 0.0024765811394900084, 0.01082115713506937, -0.009004561230540276, 0.03468520566821098, 0.02507946826517582, -0.015147005207836628, -0.024556707590818405, 0.02846434712409973, -0.0018394659273326397, -0.007076879497617483, -0.015133936889469624, -0.004414064809679985, 0.032933954149484634, 0.002488016616553068, -0.013709411956369877, 0.009710289537906647, -0.012101921252906322, 0.015382247976958752, -0.013800895772874355, 0.0023785633966326714, 0.021812211722135544, 0.006126107648015022, 0.007357863709330559, -0.002690586494281888, 0.02093658596277237, -0.01787843368947506, 0.0023328217212110758, 0.013487238436937332, -0.0017087756423279643, -0.015199282206594944, 0.001437593251466751, 0.017538638785481453, 0.033953338861465454, -0.006933120544999838, -0.006358082871884108, -0.0077760727144777775, -0.002323020016774535, -0.0055837430991232395, 0.007743400055915117, 0.0036397248040884733, 0.030921325087547302, -0.04020033776760101, 0.035992108285427094, -0.003607052145525813, -0.006835102569311857, -0.03617507591843605, -0.015160074457526207, 0.02673923596739769, -0.02705289237201214, 0.007357863709330559, 0.00879545696079731, -0.012644286267459393, -0.002976471558213234, -0.002082876628264785, -9.87834864645265e-05, 0.018649505451321602, 0.03329988941550255, 0.01343496236950159, 0.0047375233843922615, 0.007279449608176947, -0.02166845090687275, -0.010474827140569687, -0.01641470193862915, -0.005077318288385868, -0.010585914365947247, 0.03097360022366047, -0.0044205994345247746, 0.030842911452054977, 0.004557824227958918, 0.0024586112704128027, -0.011337383650243282, -0.00471791997551918, 0.00650184229016304, -0.01947285421192646, 0.043075524270534515, 0.009742962196469307, -0.003780216909945011, -0.0009997808374464512, -0.03899798542261124, -0.009030699729919434, 0.06863854825496674, 0.02479195035994053, 0.014336725696921349, -0.0036789318546652794, 0.0003628697886597365, -0.012696562334895134, -0.010938777588307858, 0.013395755551755428, -0.003708337200805545, 0.005348500330001116, -0.010651259683072567, -0.0032378521282225847, -0.014036138541996479, -0.0033113653771579266, -0.01734260283410549, -0.013630998320877552, 0.002259308472275734, -0.003610319457948208, -0.009684151038527489, -0.020949654281139374, -0.026059646159410477, 0.0034959653858095407, 0.007867556065320969, -0.004280107095837593, -0.0064920405857264996, -0.01938137225806713, 0.005979081150144339, 0.0004627253510989249, -0.034815896302461624, 0.009729892946779728, -0.001163143664598465, -0.00784141756594181, -0.007540830411016941, 0.004391193855553865, -0.0019048111280426383, 0.008684370666742325, 0.005113258026540279, -0.019198404625058174, -0.006972327362746, -0.018192090094089508, 0.001126387040130794, 0.01395772397518158, -0.0006779559189453721, 0.0035188363399356604, -0.014362864196300507, 0.005038111004978418, 0.01067739725112915, 0.004064468201249838, -0.021681521087884903, -0.017094291746616364, 0.010899570770561695, -0.013167047873139381, -0.007861021906137466, 0.006704412400722504, 0.006586791016161442, -0.005034843925386667, -0.017865363508462906, 0.030006492510437965, -0.018022192642092705, -0.018205158412456512, -0.034659069031476974, 0.03928550332784653, 0.007932901382446289, -0.021054206416010857, -0.00697886198759079, -0.16644716262817383, 0.01568283513188362, 0.040487855672836304, -0.023275941610336304, 0.015578283928334713, 0.000630580703727901, 0.04116744548082352, 0.009357425384223461, -0.021616175770759583, -0.008004780858755112, 0.03910253569483757, -0.013121305964887142, -0.033927202224731445, -0.01389237865805626, 0.030921325087547302, -0.019616613164544106, 0.010174239985644817, 0.02297535538673401, 0.01293833926320076, 0.005005438346415758, 0.04953162372112274, 0.011807868257164955, -0.03152250126004219, -0.007194500882178545, 0.002082876628264785, -0.00873011164367199, -0.010775415226817131, 0.024805018678307533, 0.00801785010844469, -0.03447610139846802, -0.0102003775537014, -0.01641470193862915, 0.015878871083259583, 0.008638628758490086, 0.001981591572985053, 0.003806354943662882, -0.009148321114480495, -0.010128498077392578, 0.004786532372236252, 0.009043768979609013, 0.007246776949614286, 0.019577406346797943, 0.03384878858923912, 0.01159876398742199, -0.004760394338518381, -0.0008470364846289158, 0.014101482927799225, -0.0020469368901103735, 0.0006105687352828681, -0.03531251847743988, 0.001314254361204803, -0.008102798834443092, -0.00043332003406248987, 0.004044864792376757, 0.0149771086871624, 0.01794377714395523, 0.011285107582807541, 0.02049223892390728, 0.013552583754062653, -0.007756469305604696, 0.007455881685018539, -0.02651706151664257, -0.012082317844033241, -0.007527761161327362, -0.015055522322654724, 0.0007494271849282086, 0.0014931366313248873, 0.012533199973404408, -0.021145690232515335, 0.01991720125079155, -0.0025827670469880104, 0.0005035660578869283, 0.006776291877031326, -0.004502280615270138, -0.008168144151568413, 0.0130690298974514, -0.011415797285735607, -0.005956210196018219, 0.012552803382277489, 0.0008682736661285162, -0.002087777480483055, 0.017996054142713547, -0.014271380379796028, 0.01599649339914322, -0.014232173562049866, -0.002844147616997361, 0.014349794946610928, 0.01343496236950159, -0.01648004725575447, -0.009416235610842705, 0.013827033340930939, -0.036854665726423264, -0.017773881554603577, -0.0019636217039078474, 0.005665424279868603, 0.027993861585855484, -0.021903693675994873, -0.0016279109986498952, 0.020988861098885536, -0.009069906547665596, 0.006926585920155048, 0.012043111026287079, -0.030267873778939247, 0.025471540167927742, 0.030607668682932854, -0.005760174710303545, 0.001774120843037963, 0.008821595460176468, 0.039311643689870834, -0.004907420836389065, 0.017185773700475693, 0.027967723086476326, 0.011951628141105175, 0.006472437176853418, 0.012794580310583115, 0.03201912343502045, 0.0015013047959655523, -0.016832910478115082, -0.004766928497701883, 0.01199736911803484, 0.031600914895534515, -0.002835979452356696, -0.007553899195045233, 0.019943339750170708, 0.004064468201249838, 0.00024075603869277984, -0.1128118634223938, -0.007155294064432383, 0.008658232167363167, 0.009461977519094944, -0.032803263515233994, 0.052249982953071594, 0.015617490746080875, 0.01931602694094181, -0.016872117295861244, 0.027680205181241035, 0.0014188066124916077, -0.037299010902643204, 0.004178822506219149, -0.015800457447767258, 0.003121864516288042, -0.001658950001001358, -0.013735550455749035, -0.021367864683270454, -0.00744281243532896, 0.003950114361941814, 0.006459367927163839, -0.02549767680466175, 0.007292518857866526, -0.014663451351225376, 0.002213567029684782, -0.015068591572344303, -0.027575653046369553, -0.004038330167531967, -0.005453052930533886, 0.00346982735209167, -0.0019652554765343666, -0.03876274451613426, -0.011481142602860928, -0.029013246297836304, 0.0015388783067464828, 0.028595037758350372, -0.004757126793265343, 0.005926805082708597, 0.014441277831792831, -0.022713974118232727, 0.004672178067266941, -0.003642992116510868, -0.01734260283410549, -0.03701149299740791, -0.0026497459039092064, -0.00970375444740057, -0.02221735008060932, 0.01727725751698017, 0.004054666496813297, -0.014950970187783241, -0.02027006447315216, -0.02301456220448017, -0.01216073241084814, -0.016048768535256386, -0.02368108183145523, -0.0011933657806366682, -0.01991720125079155, 0.01905464567244053, 0.0159311480820179, 0.0112328315153718, -0.0062208580784499645, 0.020858172327280045, -0.010252653621137142, 0.006763223093003035, 0.03949460759758949, 0.010063152760267258, -0.01781308837234974, 0.01301675383001566, 0.010017411783337593, -0.03097360022366047, -0.010553241707384586, 0.011526884511113167, -0.028699589893221855, 0.009135251864790916, -0.030424701049923897, 0.010808087885379791, -0.019969478249549866, -0.010102360509335995, 0.012716165743768215, -0.013225858099758625, -0.0035809141118079424, -0.026477854698896408, -0.021407071501016617, 0.004943360574543476, 0.0038586310110986233, 0.016832910478115082, -0.0010242852149531245, 0.006217590998858213, -0.00937049463391304, -0.02849048562347889, 0.004476142581552267, 0.0034012149553745985, 0.0334567166864872, -0.01991720125079155, 0.00563275208696723, 0.028255242854356766, 0.015787387266755104, -0.014676520600914955, 0.05000210925936699, 0.028595037758350372, -0.0007236975361593068, -0.008599421940743923, -0.055778618901968, 0.02294921688735485, 0.003803087631240487, 0.0016744694439694285, 0.006194720044732094, 0.00943583995103836, 0.02087124064564705, -0.02364187501370907, 0.006090167909860611, 0.019525131210684776, -0.009167924523353577, 0.005299491807818413, -0.01526462659239769, -0.001914612832479179, 0.01749943196773529, -0.005224344786256552, 0.014166828244924545, 0.016558460891246796, 0.01293833926320076, -0.013748619705438614, 0.01085382979363203, 0.006580256391316652, 0.018531884998083115, 0.0017888235161080956, -0.016911324113607407, 0.007338260300457478, -0.03358740732073784, 0.004319314379245043, -0.01125243492424488, -0.0066750068217515945, 0.03591369464993477, -0.002432473236694932, -0.015891941264271736, 0.01438900176435709, -0.011278572492301464, -0.020008685067296028, -0.01654539257287979, 0.01395772397518158, 0.028542760759592056, -0.004021993838250637, -0.01774774305522442, -0.04213455319404602, -0.00701153464615345, -0.0392070896923542, -0.01956433802843094, -0.022361110895872116, -0.006168582011014223, -0.01156609132885933, 0.0020224323961883783, -0.003489430993795395, 0.032202091068029404, 0.01408841460943222, 0.0059006670489907265, -0.023223666474223137, -0.015225419774651527, -0.026111921295523643, 0.006410358939319849, -0.014258312061429024, 0.04809403046965599, -0.014166828244924545, -0.0019178801449015737, 0.014179897494614124, 0.03358740732073784, -0.009135251864790916, 0.008050522767007351, 0.017264189198613167, 0.0005889231688342988, 0.0012840322451665998, 0.010520569048821926, -0.026922201737761497, -0.0006436497205868363, 0.0046166349202394485, 0.007174897473305464, -0.006629265379160643, 0.025419263169169426, -0.01721191219985485, -0.00513939606025815, 0.011526884511113167, -0.01351337693631649, 0.017630120739340782, -0.0029486999846994877, 0.008677835576236248, -0.011977765709161758, 0.00552819948643446, 0.019355233758687973, 0.00801785010844469, -0.0075800372287631035, 0.008514473214745522, -0.02587667852640152, -0.003561310702934861, -0.022857733070850372, -0.00301567860879004, -0.020923517644405365, -0.006057495251297951, 0.012480923905968666, 0.0014653649413958192, -0.013644067570567131, -0.005573941394686699, -0.023158321157097816, 0.01526462659239769, -0.0167283583432436, -0.009429304860532284, -0.012690028175711632, -0.012918735854327679, -0.015199282206594944, 0.018152883276343346, -0.0070180692709982395, -0.02922235056757927, -0.0204007551074028, 0.00701153464615345, 0.0077303312718868256, 0.007031138055026531, -0.018558021634817123, 0.0040121921338140965, -0.013722481206059456, -0.0034044822677969933, -0.027680205181241035, -0.01014810148626566, -0.035103414207696915, 0.03899798542261124, -0.004714652430266142, 0.0006122023914940655, -0.00424743490293622, -0.007939435541629791, 0.022361110895872116, 0.017538638785481453, 0.018976232036948204, -0.011324314400553703, 0.043676696717739105, 0.007174897473305464, -0.02734041027724743, -0.01829664222896099, 0.0026301422622054815, -0.010670863091945648, -0.01590500958263874, -0.034946586936712265, 0.0026105386205017567, 0.0350511372089386, 0.008592886850237846, 0.06294044852256775, -0.00517206871882081, -0.008207350969314575, 0.022256558761000633, 0.0024357405491173267, 0.020152444019913673, 0.030869048088788986, 0.006861240603029728, -0.026399441063404083, -0.024295326322317123, 0.025576092302799225, 0.005760174710303545, 0.02157696895301342, -0.024151567369699478, 0.026556268334388733, 0.005724234972149134, -0.041193582117557526, -0.0131474444642663, 0.010540172457695007, -0.015094729140400887, 0.01911999098956585, -0.03711604326963425, 0.019172266125679016, 0.004753859713673592, -0.011206693015992641, -0.0017675863346084952, 0.03499886393547058, 0.022896939888596535, -0.02109341509640217, -0.04806789383292198, -0.0029209281783550978, -0.006269867066293955, -0.0299542173743248, -0.010631656274199486, -0.012167266570031643, 0.0037508115638047457, 0.005694829858839512, 0.004116744268685579, 0.0062339273281395435, 0.015173143707215786, -0.013696343638002872, 0.014192966744303703, -0.006113038863986731, -0.012879529036581516, -0.017185773700475693, -0.015251558274030685, -0.004077537450939417, -0.016741426661610603, -0.034659069031476974], 'QueryEmbedding': [-0.005838225595653057, 0.013511702418327332, -0.028619274497032166, 0.0011528501054272056, -0.010366507805883884, 0.005043615121394396, -0.03034813515841961, -0.01645076274871826, 0.0029124633874744177, -0.041333042085170746, 0.011922481469810009, 0.023193316534161568, -0.007354302331805229, -0.02674412727355957, -0.001785379950888455, 0.03130565583705902, 0.00138724350836128, 0.01026676595211029, -0.0038799596950411797, -0.012015573680400848, -0.000941729755140841, 0.017674263566732407, -0.00048707291716709733, 0.013671289198100567, -0.0004729428328573704, 0.009182903915643692, 0.008664245717227459, -0.03846047446131706, -0.0025567172560840845, 0.01597200334072113, -0.0012035522377118468, -0.015892209485173225, 0.013099435716867447, -0.03973717242479324, -0.022129401564598083, 0.025879697874188423, 0.007227962836623192, -0.016597051173448563, 0.024709392338991165, 0.012813509441912174, 0.021890021860599518, 0.008444814011454582, -0.0011046414729207754, -0.006942036096006632, -0.002209282945841551, 0.015440045855939388, 0.0033862374257296324, -0.002684719394892454, 0.004830832593142986, -0.006579640321433544, 0.007886258885264397, 0.037582747638225555, -0.024177435785531998, -0.00792615581303835, -0.013737783767282963, 0.001041471608914435, 0.020812809467315674, -0.0012002275325357914, -0.004242355469614267, -0.014868192374706268, 0.02038724347949028, 0.02494877390563488, -0.01583901233971119, 0.014030360616743565, -0.02497537061572075, -0.004797585308551788, -0.02984277531504631, -0.002382169011980295, -0.011922481469810009, 0.016211383044719696, 0.008744039572775364, 0.028752263635396957, 0.01547994278371334, -0.01532035507261753, 0.00623719347640872, 0.009029966779053211, 0.005292970221489668, 0.017089111730456352, -0.012241655960679054, -0.014828295446932316, 0.025041865184903145, -0.008564503863453865, -0.010978258214890957, 0.0031884158961474895, 0.03322070091962814, 0.006902139168232679, -0.049312394112348557, 0.03867325931787491, -0.03215678781270981, -0.012966446578502655, 0.02856607921421528, 0.02199641242623329, 0.00685559306293726, -0.003173454664647579, 0.017647666856646538, 0.00017413272871635854, -0.017341790720820427, 0.02723618783056736, -0.00783306360244751, -0.020440438762307167, -0.03151844069361687, -0.00092261255485937, 0.0018751476891338825, -0.008757338859140873, -0.007075025234371424, 0.011583358980715275, -0.0033147556241601706, 0.0035009405110031366, 0.002498534508049488, 0.012035522609949112, -0.022408679127693176, 0.02037394419312477, 0.03324729949235916, -0.008192134089767933, 0.0045681786723434925, 0.00371372327208519, -0.014947985298931599, -0.024669496342539787, -0.022967234253883362, -0.008777286857366562, 0.011031453497707844, 0.021770332008600235, 0.000481670256704092, 0.0046812198124825954, 0.025188153609633446, -0.01877807453274727, -0.00778651749715209, -0.022222494706511497, -0.004747714381664991, -0.005359464790672064, 0.042476750910282135, 0.008537906222045422, 0.008650947362184525, 0.008025897666811943, -0.011922481469810009, 0.03689120337367058, -0.011290783062577248, 0.049312394112348557, -0.006692681461572647, -0.0007534669130109251, 0.011895883828401566, 0.008557855151593685, 0.020653221756219864, 0.00019324992899782956, 0.005814952775835991, 0.03657202795147896, 0.007553786505013704, 0.006004462018609047, -0.015346953645348549, 0.010313312523066998, 0.008624349720776081, -0.012866704724729061, 0.01988188549876213, -0.003504265332594514, 0.008218732662498951, -0.034630388021469116, -0.003993000835180283, -0.0007634410867467523, 0.00025662759435363114, -0.025161555036902428, -0.003397874068468809, 0.01844560168683529, 0.00027761494857259095, -0.02448331192135811, 0.005608819425106049, 0.04008294269442558, 0.020772911608219147, -0.011051402427256107, -0.012614024803042412, -0.020932499319314957, 0.010871866717934608, 0.003490966511890292, -0.01744818314909935, 0.010333260521292686, -0.002190996892750263, -0.0053727636113762856, 0.004185834899544716, -0.033194102346897125, 0.00011407979764044285, -0.017887046560645103, 0.017567873001098633, 0.012121965177357197, 0.005183253902941942, 0.006875541526824236, -0.0101005295291543, -0.0017870423616841435, -0.004980445373803377, -0.0009134695283137262, -0.00095835339743644, -0.019669102504849434, -0.0152405621483922, 0.034178223460912704, 0.0015742596006020904, -0.002405442064628005, -0.6374970078468323, -0.01714230701327324, -0.018312612548470497, -0.007081674877554178, 0.05042950436472893, -0.01907065138220787, -0.0011146157048642635, 0.014562317170202732, -0.021730434149503708, 0.032023798674345016, 0.008152238093316555, -0.009043265134096146, 0.005146681796759367, -0.005482479464262724, -0.002352246316149831, -0.0037203726824373007, -0.00840491708368063, -0.009907695464789867, -0.013185879215598106, 0.038566865026950836, -0.011616606265306473, 0.0032432740554213524, -0.028991645202040672, -0.000760531984269619, 0.007487291935831308, 0.010346559807658195, 0.024988669902086258, 0.005396036431193352, 0.012441139668226242, -0.000884378154296428, -0.04194479063153267, 0.020334048196673393, 0.015134170651435852, 0.004122665151953697, 0.038247693330049515, 0.02364547923207283, -0.014628811739385128, 0.014642110094428062, 0.010213570669293404, 0.03244936466217041, -0.042795922607183456, 0.005462531000375748, 0.006177348084747791, -0.010752176865935326, -0.0019100573845207691, 0.01986858621239662, -0.009116409346461296, -0.010945010930299759, 0.006915437988936901, -0.025228049606084824, 0.00447841128334403, -0.03143864497542381, -0.016344372183084488, -0.01566612720489502, 0.014309637248516083, 0.002229231409728527, 0.01679653488099575, -0.001949954079464078, 0.022727852687239647, 0.00945553183555603, -0.008850431069731712, 0.005768406204879284, 0.004973795730620623, -0.006659434176981449, -0.035188939422369, 0.009947591461241245, -0.006144100800156593, -0.020998993888497353, 0.01760776899755001, 0.00822538137435913, -0.018206220120191574, 0.017155606299638748, -0.004641322884708643, 0.005864823702722788, -0.004840806592255831, -0.002126164734363556, 0.049817752093076706, 0.005665339529514313, -0.010712279938161373, 0.007646878715604544, 0.010752176865935326, -0.016038497909903526, -0.0073410035111010075, -0.00906321406364441, 0.004372019786387682, -0.016597051173448563, -0.034630388021469116, 0.001041471608914435, 0.01665024645626545, 0.013671289198100567, -0.0014479198725894094, 0.009522026404738426, 0.006393455434590578, -0.011224288493394852, -0.012753663584589958, 0.02036064676940441, -0.017660966143012047, 0.003311431035399437, -0.017022617161273956, -0.049179404973983765, 0.007447395008057356, -0.0036106565967202187, -0.006110853515565395, 0.005509077571332455, 0.015759220346808434, 0.00045216327998787165, -0.010891814716160297, -0.00897677056491375, 0.032555755227804184, -0.03213018923997879, -0.006310337223112583, -0.03095988556742668, -0.002443676581606269, 0.008205433376133442, -0.010200271382927895, -0.022235793992877007, 0.036811407655477524, -0.006782448850572109, -0.00044302025344222784, -0.004714467097073793, 0.0016033509746193886, 0.034311212599277496, 0.013564897701144218, -0.02513495832681656, 0.0042656282894313335, 0.028778862208127975, -0.014389431104063988, 0.005941292271018028, -0.00742744654417038, 0.010153724811971188, 0.007267859764397144, 0.003557461081072688, 0.005635417066514492, -0.02856607921421528, 0.010812021791934967, -0.014894790016114712, 0.018179623410105705, -0.0015476617263630033, 0.013398661278188229, -0.02025425434112549, 0.010565991513431072, 0.012394593097269535, -0.0007551292655989528, -0.006157399620860815, 0.008983420208096504, -0.02167723886668682, -0.02917782962322235, 0.0018535369308665395, -0.009003368206322193, 0.020626625046133995, -0.018884465098381042, -0.015014479868113995, 0.005588870961219072, -0.0016881315968930721, 0.014682007022202015, -0.0028044097125530243, -0.0032382868230342865, -0.030880091711878777, 0.00697528338059783, -0.040029749274253845, -0.009189553558826447, 0.01695612259209156, 0.004471761640161276, 0.0028143839444965124, 0.003883284516632557, -0.014402730390429497, -0.032050397247076035, 0.02169053815305233, -0.0008594426908530295, -0.019469618797302246, 0.01861848682165146, -0.015134170651435852, 0.0012077081482857466, 0.0034942911006510258, 0.011762894690036774, -0.010499496944248676, -0.034018635749816895, 0.03226317837834358, 0.03976377099752426, -0.005582221318036318, -0.0007825582870282233, 0.02869906835258007, 0.01240124274045229, 0.0004646310117095709, 0.01695612259209156, 0.0004467605904210359, 0.00366717716678977, -4.902678028884111e-06, -0.026863817125558853, 0.03715718165040016, -0.02623876929283142, 0.03207699581980705, -0.03165142983198166, -0.013086136430501938, -0.012175160460174084, 0.024895576760172844, -0.01273371558636427, 0.006822345778346062, -0.015759220346808434, -0.005179929081350565, 0.009681613184511662, 0.030587514862418175, -0.005386062432080507, 0.005858174059540033, -0.0004729428328573704, 0.013591496273875237, -0.012181810103356838, -0.002131151966750622, 0.022461874410510063, 0.01157670933753252, 0.013392011635005474, -0.003876635106280446, -0.014775099232792854, -0.0141899473965168, 0.005552298855036497, 0.02118517830967903, -0.014974583871662617, 0.0005145019385963678, -0.0011004855623468757, 0.009980838745832443, 0.025999387726187706, 0.010679032653570175, 0.018365807831287384, -0.007866310887038708, -0.007174767088145018, 0.005329541862010956, 0.002646485110744834, 0.010865217074751854, 0.004717791918665171, -0.028113916516304016, -0.01695612259209156, 0.0037802178412675858, 0.02607918158173561, 0.0031052976846694946, -0.000939236197154969, 0.02675742655992508, 0.04588127136230469, -0.010825320146977901, 0.01044630166143179, -0.004554879851639271, -0.009668314829468727, 0.02936401404440403, 0.005449232179671526, -0.0150942737236619, 0.015918806195259094, -0.005698587279766798, 0.02655794285237789, 0.008178835734724998, -0.012248304672539234, 0.005964565556496382, 0.013657990843057632, -5.2234623581171036e-05, -0.019283432513475418, -0.0006940373568795621, 0.0040428717620670795, -0.020121265202760696, -0.031199265271425247, 0.015759220346808434, 0.01811312884092331, 0.029417209327220917, 0.028938449919223785, -0.00664281053468585, 0.02252836897969246, 0.008664245717227459, 0.007281158585101366, 0.03393884375691414, -0.010991557501256466, 0.012534231878817081, 0.0025018593296408653, -0.02494877390563488, 0.021424559876322746, -0.012507634237408638, 0.04207778349518776, -0.020998993888497353, -0.006290388759225607, -0.017567873001098633, 0.005974539555609226, 0.025321142747998238, -0.006380156613886356, 0.01613158918917179, -0.013278971426188946, -0.052450940012931824, 0.016849732026457787, 0.019310031086206436, -0.008850431069731712, -0.004305525217205286, 0.013844175264239311, -0.008650947362184525, -0.01566612720489502, 0.003411172889173031, 0.018020035699009895, 0.02283424511551857, -0.02102559246122837, 0.003939805086702108, 0.009814602322876453, 0.01762106828391552, 0.0395243875682354, -0.006563016679137945, -0.007753270212560892, 0.015732621774077415, -0.02101229317486286, -0.006084255874156952, -0.023711973801255226, -0.0015609606634825468, 0.03263554722070694, 0.0015991950640454888, -0.03476337715983391, -0.02379176765680313, 0.011776193045079708, -0.006815696135163307, -0.032369568943977356, 0.008251979947090149, -0.0037702436093240976, 0.013897370547056198, 0.0016798197757452726, 0.008664245717227459, -0.012135264463722706, 0.02216929942369461, 0.034470800310373306, 0.014628811739385128, -0.002222581999376416, -0.033513277769088745, 0.004827507771551609, 0.012195109389722347, 0.012846756726503372, -0.028592677786946297, -0.04130644351243973, 0.0017820552457123995, -0.02933741733431816, -0.004837482236325741, -0.011629905551671982, 0.005854849237948656, 0.01630447618663311, 0.006622862070798874, -0.04888682812452316, -0.016557155176997185, 0.014256441965699196, -0.016397567465901375, 0.028167111799120903, 0.01957600936293602, 0.002355571137741208, -0.02218259871006012, 0.006539743859320879, -0.017873747274279594, -0.0032931449823081493, 0.013604794628918171, -8.426112617598847e-05, 0.011749595403671265, 0.013737783767282963, 0.01354494970291853, 0.056547004729509354, 0.005176604259759188, 0.01942972093820572, -0.014336234889924526, -0.029470406472682953, 0.01633107289671898, 0.005698587279766798, 0.01645076274871826, 0.0119091821834445, 0.02560042031109333, -0.00530626904219389, 0.0029074763879179955, -0.003683800809085369, 0.00029527756851166487, 0.022634761407971382, 0.02936401404440403, 0.002777811838313937, -0.012175160460174084, 0.0257733054459095, 0.0008182991296052933, -0.008059144951403141, 0.01582571491599083, 0.010486197657883167, -0.0005726847448386252, -0.01050614658743143, 0.005811627954244614, -0.013518352061510086, 0.032688744366168976, -0.007174767088145018, 0.0046812198124825954, -0.036811407655477524, 0.002362220548093319, -0.012899952009320259, -0.04761013388633728, -0.0110048558562994, 0.003683800809085369, 0.012979745864868164, -0.019044052809476852, -0.008730740286409855, -0.015785817056894302, -0.01393726747483015, -0.019190341234207153, -0.012667221017181873, 0.004501684103161097, -0.03420482203364372, -0.03617306053638458, -0.005598844960331917, -0.001614156411960721, 0.03819449618458748, 0.0004999562515877187, 0.02560042031109333, 0.000209769670618698, -0.017700862139463425, 0.03364626690745354, -0.02641165442764759, -0.03186421096324921, -0.012853405438363552, -0.03441760316491127, -0.0011187716154381633, -0.0003576162562239915, -0.020267553627490997, 0.004963821731507778, 0.005492453929036856, -0.009887746535241604, -0.006021085660904646, -0.013471805490553379, 0.025839800015091896, -0.015293757431209087, 0.03441760316491127, -0.01216186210513115, -0.006094229873269796, -0.007533838041126728, 0.008092392235994339, -0.012620674446225166, 0.013897370547056198, -0.00871744193136692, -0.011882584542036057, -0.0162911769002676, 0.011031453497707844, 0.004225731827318668, 0.0001782886392902583, -0.016078393906354904, 0.003683800809085369, -0.009601820260286331, 0.012414541095495224, -0.005302944220602512, 0.019017454236745834, -0.022927338257431984, 0.018658384680747986, 0.004674570169299841, 0.021118683740496635, -0.005123408976942301, 0.014442626386880875, -0.011955728754401207, -0.0058947461657226086, 0.001606675679795444, 0.01779395528137684, -0.0015617918688803911, -0.03207699581980705, 0.01973559707403183, 0.0002057176607195288, 0.0049172756262123585, 0.006084255874156952, 0.016025198623538017, -0.005419309716671705, 0.005529026035219431, -0.014455925673246384, -0.03266214579343796, -0.020600026473402977, -0.00399965001270175, -0.013225775212049484, 0.03175782039761543, -0.010326610878109932, -0.02122507616877556, -0.03348667919635773, -0.02218259871006012, -0.010366507805883884, 0.009608468972146511, -0.025813203305006027, -0.023100223392248154, 0.0089036263525486, -0.003936480265110731, 0.014828295446932316, 0.019216937944293022, 0.03260895237326622, -0.007387549616396427, -0.02578660473227501, -0.012899952009320259, -0.032396167516708374, -0.030135352164506912, 0.010260116308927536, -0.011796141974627972, 0.017501378431916237, 0.016264578327536583, 0.05085507035255432, 0.011516864411532879, 0.024656197056174278, -0.017647666856646538, -0.018485497683286667, 0.01679653488099575, 0.01957600936293602, -0.005312918219715357, -0.011370575986802578, -0.008052496239542961, 0.01206876989454031, -0.006961984559893608, 0.01954941265285015, 0.009495428763329983, 0.0054060108959674835, 0.014123452827334404, -0.03311431035399437, -0.027129795402288437, -0.008112341165542603, -0.009103110060095787, -0.02040054276585579, 0.0024669496342539787, -0.0016100005013868213, 0.010645785368978977, -0.015360252000391483, -0.017009317874908447, 0.016676845028996468, -0.0047876108437776566, 0.005775055848062038, 0.014229844324290752, 0.051785994321107864, 0.00022192571486812085, 0.013631392270326614, -0.01889776438474655, -0.02021435834467411, -0.022568266838788986, 0.011809440329670906, -0.005987838376313448, -0.0018252767622470856, -0.004112690687179565, -0.000426812213845551, 0.04127984493970871, 0.00864429771900177, 0.005415984895080328, -0.01124423649162054, 0.011895883828401566, -0.008963472209870815, -0.014495822601020336, -0.01190253347158432, -0.015998600050807, -0.0161448884755373, -0.034976158291101456, -0.011696400120854378, -0.0018535369308665395, 0.019496215507388115, 0.01579911634325981, 0.0021245023235678673, 0.010472899302840233, 0.0132856210693717, -0.0346037894487381, -0.0010364844929426908, -0.022781049832701683, 0.03976377099752426, -0.015772517770528793, 0.0048208581283688545, 0.021158581599593163, 0.004514983389526606, -0.01986858621239662, 0.008152238093316555, -0.009342490695416927, -0.026943610981106758, 0.03673161566257477, 0.0200547706335783, -0.007168117444962263, -0.00889697764068842, -0.0009891071822494268, -0.001127914641983807, -0.02169053815305233, -0.01924353651702404, 0.014349534176290035, -0.011437070555984974, -0.002840981585904956, -0.02138466201722622, 0.004375344607979059, -0.004721116274595261, 0.004398617427796125, 0.0009334179339930415, -0.005535675212740898, 0.027608556672930717, -0.0038799596950411797, -0.01633107289671898, 0.0005706067895516753, -0.034816570580005646, 0.010938361287117004, -0.00664281053468585, 0.006004462018609047, -0.010652435012161732, 0.01796684041619301, -0.003730346914380789, 0.0012675533071160316, -0.014961284585297108, 0.007041777949780226, 0.019004156813025475, 0.006170698907226324, 0.00385668664239347, 0.005652040708810091, -0.010718929581344128, -0.003587383544072509, 0.0008818845963105559, 0.02819371037185192, -0.006336935330182314, -0.017261996865272522, -9.335218055639416e-05, 0.01763436757028103, 0.02250177226960659, -0.00538273761048913, -0.03117266669869423, -0.021477755159139633, -0.02885865606367588, -0.002053020754829049, 0.009561923332512379, -0.007540487218648195, 0.024363620206713676, 0.009721510112285614, -0.004408591892570257, -0.016583751887083054, -0.03311431035399437, -0.0009741458343341947, 0.013039590790867805, -0.01645076274871826, 0.004997069016098976, 0.012288201600313187, 0.005558948498219252, -0.008584452793002129, 0.0023239862639456987, -0.031412046402692795, 0.004006299655884504, 0.00914300698786974, -0.02218259871006012, -0.015267159789800644, 0.00011428759171394631, -0.01107800006866455, -0.04766332730650902, 0.007587033789604902, -0.012427840381860733, -0.0021544250193983316, 0.002992257010191679, -0.004651297349482775, -0.0013032940914854407, -0.006513145752251148, 0.009555273689329624, 0.005755107384175062, -0.004721116274595261, -0.018352508544921875, 0.018153024837374687, 0.004807559307664633, 0.015785817056894302, -0.009701562114059925, 0.008232031017541885, 0.02872566692531109, -0.012035522609949112, -0.024017848074436188, 0.006662758532911539, 0.0028027473017573357, 0.02689041569828987, -0.011011505499482155, -0.012946498580276966, 0.0030022310093045235, -0.026970209553837776, -0.008757338859140873, -0.024735990911722183, -0.000853624427691102, -0.008983420208096504, -0.0025966139510273933, -0.03893923759460449, -0.026212170720100403, 0.0003303950361441821, 0.027156393975019455, 0.010173673741519451, -0.015506540425121784, 0.01149691641330719, -0.008983420208096504, -0.006659434176981449, 0.020626625046133995, -0.0012816833332180977, -0.0077798678539693356, -0.019708998501300812, -0.006446651183068752, -0.05316907912492752, -0.0028592676389962435, -0.018153024837374687, 0.019443020224571228, -0.012274903245270252, -0.007068375591188669, 0.002586639951914549, 0.006739227566868067, -0.013671289198100567, -0.02006806991994381, 0.001623299322091043, 0.007733321748673916, 0.005116759333759546, 0.0014071919722482562, -0.004714467097073793, 0.003919856622815132, -0.010951660573482513, -0.01395056676119566, -0.0528499074280262, 0.024110941216349602, 0.0043487465009093285, 0.016370970755815506, 0.03800831362605095, -0.026491448283195496, -0.006715954281389713, -0.014814996160566807, -0.002116190502420068, 0.01582571491599083, -0.0013814253034070134, 0.020812809467315674, -0.0033430159091949463, -0.005495778750628233, -0.0019981625955551863, 0.0031601558439433575, 0.02448331192135811, -0.010605888441205025, -0.004574828315526247, -0.03550811484456062, 0.0051200841553509235, 0.0035109147429466248, 0.019150443375110626, 0.0008502996643073857, -0.011550111696124077, 0.00021070476213935763, -0.009827901609241962, 0.015945404767990112, -0.023219913244247437, -0.017647666856646538, 0.0011420446680858731, 0.01808653026819229, 0.01891106367111206, 0.012261603958904743, -0.0132856210693717, 0.041519228368997574, 0.011516864411532879, -0.0010356534039601684, 0.010585940442979336, -0.015147469006478786, -0.009834551252424717, 0.0023904808331280947, -0.0034843168687075377, -0.0034676932264119387, 0.003289820160716772, -0.0322897769510746, -0.009954241104424, 0.0041259899735450745, -0.013884072192013264, -0.026052583009004593, -0.010240168310701847, -0.052450940012931824, 0.021304870024323463, 0.006476573646068573, 0.0004388643428683281, 0.012108665890991688, 0.013963866047561169, -0.005588870961219072, 0.011377225629985332, -0.020107965916395187, -0.004292226396501064, -0.037130583077669144, -0.04034892097115517, 0.02431042492389679, -0.01762106828391552, 0.008358370512723923, -0.02399125136435032, -0.006556367501616478, -0.005033641122281551, 0.030587514862418175, 0.20948457717895508, 0.01746148057281971, -0.025826502591371536, 0.027010105550289154, 0.01019362173974514, 0.005921343807131052, 0.021557549014687538, 0.002822695765644312, 0.004960496909916401, 0.025201452895998955, -0.009202851913869381, 0.02134476602077484, 0.031066276133060455, 0.007720022927969694, 0.02103889174759388, 0.009595170617103577, -0.032236579805612564, -0.015493241138756275, -0.03032153658568859, -0.009448882192373276, 0.020347347483038902, -0.0004317993007134646, -0.0022707905154675245, -0.013465155847370625, 0.02118517830967903, 0.0007659346447326243, -0.017155606299638748, -0.0021843474823981524, 0.04159902036190033, -0.018884465098381042, -0.0175944697111845, 0.0023938054218888283, 0.003229975001886487, 0.002383831422775984, 0.01336541399359703, -0.020121265202760696, 0.007899558171629906, -0.0017704187193885446, 0.017155606299638748, -0.01288000401109457, 0.01321247685700655, -0.0239646527916193, 0.020134564489126205, 0.0012243317905813456, -0.007394199259579182, 0.017009317874908447, 0.0056420667096972466, 0.004997069016098976, 0.017222100868821144, -0.006995231844484806, -0.01696942187845707, 0.010845269076526165, 0.012853405438363552, 0.02036064676940441, -0.006955334916710854, -0.003597357776015997, 0.022554967552423477, -0.015014479868113995, -0.016091693192720413, -0.0033097686246037483, -0.0054226345382630825, 0.02822030708193779, -0.026850517839193344, 0.0029257622081786394, -7.743633432255592e-07, -0.014030360616743565, -0.017873747274279594, 0.010413054376840591, -0.005568922497332096, -0.022714555263519287, 0.0014013736508786678, -0.038247693330049515, -0.006223894190043211, -0.01069233100861311, -0.0026614463422447443, -0.0006998556200414896, -0.0006919594015926123, 0.023911457508802414, 0.01941642351448536, 0.0012974758865311742, 0.003316418034955859, -0.024762587621808052, -0.010206921026110649, -0.01395056676119566, -0.00889697764068842, 0.003946454264223576, -0.019363226369023323, 0.0008577803382650018, -0.00042764339013956487, 0.0014736865414306521, 0.017727460712194443, -0.02232888527214527, -0.006287064403295517, -0.006935386452823877, 0.011297431774437428, 0.03994995355606079, 0.006742552388459444, -0.017660966143012047, -0.01666354574263096, -0.03133225440979004, -0.023618880659341812, 0.054073408246040344, 0.013584846630692482, -0.0015767531003803015, -0.014575615525245667, 0.011390524916350842, 0.0040727942250669, -0.003697099629789591, -0.00635688379406929, 0.0046812198124825954, -0.00619397172704339, -0.01892436295747757, -0.016171487048268318, -0.013312218710780144, -0.008790586143732071, -0.013631392270326614, -0.0026664333418011665, -0.001051445840857923, 0.01727529615163803, -0.007174767088145018, -0.0005016186041757464, -0.01762106828391552, 0.023233212530612946, 0.011536812409758568, -0.033513277769088745, 0.008172186091542244, -0.02234218455851078, 0.0026331860572099686, -0.006203946191817522, -0.049179404973983765, 0.007101622875779867, -0.00011969027400482446, 0.0043952930718660355, 0.000829520111437887, 0.016410866752266884, 0.015307056717574596, 0.010752176865935326, 0.01280685979872942, -0.02708989940583706, -0.022461874410510063, 0.00664613489061594, -0.010758825577795506, 0.004278927575796843, -0.010745527222752571, -0.0006134126451797783, -0.0243237242102623, 0.022953934967517853, 0.02856607921421528, -0.00889697764068842, -0.028433090075850487, -0.027847938239574432, -0.007952754385769367, 0.007753270212560892, 0.009428934194147587, 0.012899952009320259, 0.018804673105478287, -0.010499496944248676, -0.026491448283195496, 0.009967540390789509, -0.01532035507261753, -0.04064149782061577, -0.02478918619453907, 0.034630388021469116, 0.006715954281389713, -0.014495822601020336, -0.019669102504849434, -0.1688430905342102, 0.006875541526824236, 0.020626625046133995, -0.018817970529198647, 0.01763436757028103, 0.010792072862386703, 0.049312394112348557, 0.014642110094428062, -0.005276346579194069, 0.007746620569378138, 0.01663694903254509, -0.007573734503239393, -0.03494955971837044, -0.011935780756175518, 0.01566612720489502, -0.023592283949255943, 0.004628024064004421, 0.017155606299638748, 0.03835408389568329, 0.014482523314654827, 0.058462049812078476, 0.0005078524700365961, -0.009003368206322193, 0.011164442636072636, 0.019482918083667755, 0.01345185749232769, -0.006456625647842884, 0.010865217074751854, -0.006486548110842705, -0.04564189165830612, -0.0006840631831437349, -0.00016228837193921208, -0.007061726413667202, -0.020453738048672676, 0.0051034605130553246, 0.02037394419312477, -0.013225775212049484, -0.014376131817698479, -0.0006051008240319788, 0.008511308580636978, 0.0008091561612673104, 0.023751869797706604, 0.035135746002197266, 0.013584846630692482, 0.017421584576368332, 0.013245724141597748, 0.0178072527050972, -0.003085349453613162, 0.019443020224571228, -0.025028565898537636, 0.006346909329295158, -0.0390988253057003, 0.0024470011703670025, -0.0049172756262123585, 0.005043615121394396, 0.020826108753681183, 0.010825320146977901, 0.026225470006465912, -0.014123452827334404, -0.003783542662858963, 0.01956271007657051, -0.020506933331489563, -0.018046634271740913, -0.01288665272295475, -0.011157793924212456, -0.004661271348595619, -0.01647736132144928, 0.005808303132653236, -0.010140426456928253, 0.010878516361117363, -0.029231024906039238, -0.002777811838313937, -0.02169053815305233, 0.009262697771191597, 0.009887746535241604, 0.001861848752014339, -0.013505052775144577, 0.01905735209584236, 0.020134564489126205, -0.007886258885264397, -0.037290170788764954, 0.03917861729860306, 0.0020147862378507853, 0.010831969790160656, -0.01345185749232769, 0.02073301561176777, 0.007081674877554178, 0.005173279903829098, -0.006942036096006632, -0.003454394405707717, 0.020307449623942375, -0.04843466356396675, -0.01857859082520008, -0.009701562114059925, 0.03800831362605095, 0.017873747274279594, -0.02723618783056736, -0.010579290799796581, 0.017341790720820427, 0.00242705293931067, 0.011563410982489586, -0.025959491729736328, -0.05045609921216965, 0.026637736707925797, 0.0076734768226742744, 0.008431514725089073, -0.008517958223819733, 0.022461874410510063, 0.02968318946659565, -0.017847150564193726, -0.012301500886678696, 0.03197060152888298, -0.002069644397124648, 0.02661113813519478, 0.021637342870235443, 0.020932499319314957, -0.008531256578862667, -0.018139725551009178, -0.00954862404614687, 0.025866398587822914, 0.021092087030410767, -0.017035916447639465, 0.001239293022081256, 0.009236100129783154, 0.006699330639094114, 0.014469224959611893, -0.0645795539021492, -0.03569430112838745, 0.023711973801255226, 0.02822030708193779, -0.02449660934507847, 0.032848332077264786, -0.00542928371578455, 0.027023404836654663, -0.02625206671655178, 0.0217171348631382, 0.011523514054715633, -0.01369788683950901, -0.01051944587379694, -0.025387637317180634, 0.018179623410105705, 0.0036605275236070156, 0.010293363593518734, -0.03101308085024357, 0.005130058154463768, 0.004242355469614267, 0.0016681832494214177, -0.004272277932614088, 0.021251672878861427, -0.03598687797784805, -0.013671289198100567, 0.013923969119787216, -0.016171487048268318, 0.00664281053468585, 0.005918019451200962, 0.029257623478770256, -0.0033746007829904556, -0.00945553183555603, -0.004182510077953339, -0.007041777949780226, -0.013897370547056198, -0.00766682717949152, -0.042955510318279266, 0.012274903245270252, 0.008351721800863743, -0.016011899337172508, 0.00383341358974576, -0.003630605060607195, 0.00021569184900727123, -0.03226317837834358, -0.02529454417526722, -0.003913206979632378, -0.01857859082520008, 0.03181101754307747, 0.008378319442272186, -0.01004068460315466, 0.007128220982849598, -0.003760269610211253, 0.020187759771943092, -0.03739656135439873, -0.020600026473402977, 0.011217638850212097, 0.016051795333623886, 0.016091693192720413, -0.01760776899755001, 0.01666354574263096, -0.004272277932614088, 0.013152631931006908, 0.022581566125154495, 0.03250255808234215, 0.016437465324997902, 0.02085270546376705, -0.023193316534161568, -0.01581241562962532, 0.012328098528087139, -0.018844569101929665, -0.006001137662678957, 0.011550111696124077, -0.04335447773337364, -0.0005485804285854101, -0.01843230240046978, 0.026717528700828552, -0.03338028863072395, -0.015360252000391483, 0.005316243041306734, -0.01532035507261753, -0.010014086030423641, -0.02121177688241005, -0.02513495832681656, -0.012986394576728344, 0.029789580032229424, 0.021557549014687538, -0.0021544250193983316, 0.00037922701449133456, 0.004701168276369572, -0.02089260332286358, -0.013438558205962181, -0.007114922162145376, 0.046386633068323135, -0.02526794746518135, -0.004784286487847567, 0.011762894690036774, 0.026478148996829987, -0.002668095752596855, 0.017567873001098633, 0.007826413959264755, -0.011570059694349766, -0.005193227902054787, -0.08117660880088806, 0.00986114889383316, -0.0304811242967844, -0.0006632836302742362, 0.006649459712207317, 0.01181608997285366, 0.009947591461241245, -0.0044119167141616344, 0.00208294321782887, 0.011317380703985691, -0.03165142983198166, 0.005558948498219252, -0.01811312884092331, -0.001690625213086605, -0.006639485713094473, -0.003929830621927977, -0.011044752784073353, -0.00342779653146863, 0.008730740286409855, -0.022448576986789703, -0.006227219011634588, 0.005010367836803198, 0.009575221687555313, 0.015546437352895737, -0.012913251295685768, 0.001265890896320343, -0.012015573680400848, 0.009581871330738068, -0.015692725777626038, -0.00714151980355382, 0.0372103787958622, -0.01207541860640049, -0.005967890378087759, 0.02851288393139839, -0.015599632635712624, -0.027103198692202568, 0.0051865787245333195, 0.007194715552031994, 0.04529612138867378, -0.01442932803183794, -0.03635924682021141, -0.02415083721280098, -0.0051533314399421215, 0.0025899645406752825, -0.015533138066530228, 0.0030836870428174734, 0.01857859082520008, -0.002176035661250353, -0.003497615922242403, 0.022554967552423477, 0.019682401791214943, 0.01485489308834076, 0.014775099232792854, -0.014017061330378056, -0.005189903546124697, -0.036784812808036804, 0.01954941265285015, -0.007194715552031994, 0.04582807794213295, -0.00714151980355382, 0.015054376795887947, 0.03393884375691414, 0.054259590804576874, 0.02512165904045105, -0.004338772501796484, 0.012115315534174442, -0.011031453497707844, -0.00369045021943748, 0.031279057264328, -0.03314090892672539, -0.0020679819863289595, -0.010067282244563103, -0.0023938054218888283, -0.010745527222752571, 0.02267465740442276, -0.01288665272295475, -0.01182938925921917, 0.008970120921730995, -0.004827507771551609, 0.019629204645752907, 0.0036605275236070156, 0.028911851346492767, -0.02429712563753128, 0.01828601397573948, 0.02968318946659565, 0.05330206826329231, 0.0013440221082419157, 0.009196203202009201, 0.0027528763748705387, -0.02087930403649807, -0.014628811739385128, 0.0021560874301940203, -0.01876477524638176, -0.0012052145320922136, 0.006592939607799053, -0.0005410998128354549, -0.008019248954951763, -0.007853011600673199, -0.0019316680263727903, 0.018232818692922592, -0.007886258885264397, 0.006902139168232679, -0.012248304672539234, -0.015546437352895737, -0.02449660934507847, 0.026039283722639084, -0.023392800241708755, -0.040827684104442596, -0.0036937748081982136, -0.009129708632826805, 0.019456319510936737, 0.012853405438363552, 0.034523993730545044, 0.0035009405110031366, -0.005282995756715536, 0.005738483741879463, -0.014136751182377338, -0.013644691556692123, -0.029284220188856125, 0.015041078440845013, -0.011955728754401207, 0.011443720199167728, 0.0019349928479641676, 0.0029856073670089245, 0.014017061330378056, 0.031571634113788605, 0.003454394405707717, 0.008065794594585896, 0.03505595028400421, -0.008464762009680271, 0.00017631458467803895, 0.007460693828761578, -0.018817970529198647, -0.016716741025447845, -0.003414497710764408, -0.01109794806689024, -0.00978800468146801, 0.027289383113384247, -0.010818671435117722, 0.05596185475587845, -0.011842687614262104, -0.022102804854512215, 0.005582221318036318, 0.011722997762262821, 0.02706330083310604, 0.028938449919223785, 0.00906321406364441, -0.03298132121562958, -0.0544457770884037, 0.06160059571266174, -0.019629204645752907, 0.01676993817090988, -0.03763594105839729, 0.009043265134096146, 0.010752176865935326, -0.018857868388295174, -0.020985694602131844, 0.003750295378267765, 0.0014404392568394542, 0.008950172923505306, -0.010964958928525448, 0.010898464359343052, 0.0003717463696375489, -0.011204339563846588, -0.01288665272295475, 0.023246511816978455, 0.023273108527064323, -0.0015717661008238792, -0.04960497096180916, 0.018073230981826782, 0.0016465724911540747, -0.02332630567252636, -0.014682007022202015, 0.018206220120191574, -0.02008136920630932, 0.000137041206471622, -0.008857080712914467, 0.01877807453274727, 0.006725928746163845, 0.006067632231861353, 0.011071350425481796, -0.010698980651795864, -0.005113434512168169, -0.016184784471988678, -0.0015792467165738344, -0.013498403131961823, 0.004255654290318489, -0.009189553558826447], 'Id': 'SG93IG1hbnkgZGlmZmVyZW50IHByb2R1Y3QgY2F0ZWdvcmllcyBkbyB3ZSBoYXZlPw=='}\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Request URL: 'https://open-ai-vector-db.search.windows.net/indexes('text-2-sql-query-cache-index')/docs/search.index?api-version=REDACTED'\n", + "Request method: 'POST'\n", + "Request headers:\n", + " 'Content-Type': 'application/json'\n", + " 'Content-Length': '69724'\n", + " 'api-key': 'REDACTED'\n", + " 'Accept': 'application/json;odata.metadata=none'\n", + " 'x-ms-client-request-id': '5a0a4738-7141-11ef-99b1-0242ac110002'\n", + " 'User-Agent': 'azsdk-python-search-documents/11.6.0b4 Python/3.12.3 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.36)'\n", + "A body is sent with the request\n", + "INFO:azure.core.pipeline.policies.http_logging_policy:Response status: 200\n", + "Response headers:\n", + " 'Transfer-Encoding': 'chunked'\n", + " 'Content-Type': 'application/json; odata.metadata=none; odata.streaming=true; charset=utf-8'\n", + " 'Content-Encoding': 'REDACTED'\n", + " 'Vary': 'REDACTED'\n", + " 'Server': 'Microsoft-IIS/10.0'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Preference-Applied': 'REDACTED'\n", + " 'OData-Version': 'REDACTED'\n", + " 'request-id': '5a0a4738-7141-11ef-99b1-0242ac110002'\n", + " 'elapsed-time': 'REDACTED'\n", + " 'Strict-Transport-Security': 'REDACTED'\n", + " 'Date': 'Thu, 12 Sep 2024 19:58:17 GMT'\n" + ] + } + ], + "source": [ + "await ask_question(\"How many different product categories do we have?\", history)" + ] + } + ], + "metadata": { + "kernel_info": { + "name": "python310-sdkv2" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + }, + "microsoft": { + "host": { + "AzureML": { + "notebookHasBeenCompleted": true + } + }, + "ms_spell_check": { + "ms_spell_check_language": "en" + } + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}