diff --git a/.github/workflows/examples-test.yml b/.github/workflows/examples-test.yml index b437aea6..31bb01e2 100644 --- a/.github/workflows/examples-test.yml +++ b/.github/workflows/examples-test.yml @@ -46,7 +46,7 @@ jobs: run: | for folder in *; do echo "$folder"; - if [[ $folder == multimodal_clip ]]; then + if [[ $folder == multimodal_clip_diffusiondb ]]; then continue fi if [ ! -f "$folder"/test.py ]; then @@ -59,7 +59,7 @@ jobs: echo "$file"; python -m pip install -r "$file"; pip uninstall lancedb -y - pip install "lancedb @ git+https://github.com/lancedb/lancedb.git#egg=subdir&subdirectory=python" + pip install lancedb fi done for file in *; do @@ -129,6 +129,7 @@ jobs: env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | + npm install @lancedb/vectordb-linux-x64-gnu for d in *; do if [[ $d == *.js ]]; then echo "$d"; diff --git a/README.md b/README.md index 092cb1ae..ec240e4e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ This repository contains examples, applications, starter code, & tutorials to he - It **integrates into python data ecosystem** so you can simply start using these in your existing data pipelines in pandas, arrow, pydantic etc. - LanceDB has **native Typescript SDK** using which you can **run vector search** in serverless functions! - + +
Join our community for support - DiscordTwitter @@ -31,34 +32,39 @@ If you're looking for in-depth tutorial-like examples, checkout the [tutorials]( | Example   | Notebook & Scripts   | Read The Blog!       | |-------- | ------------- | ------------- | | | | | -| [Youtube transcript search bot](/examples/Youtube-Search-QA-Bot/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/Youtube-Search-QA-Bot/main.py) [![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/Youtube-Search-QA-Bot/index.js) [![LLM](https://img.shields.io/badge/openai-api-white)](#)|| -| [Langchain: Code Docs QA bot](/examples/Code-Documentation-QA-Bot/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/Code-Documentation-QA-Bot/main.py) [![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/Code-Documentation-QA-Bot/index.js)[![LLM](https://img.shields.io/badge/openai-api-white)](#)|| -| [AI Agents: Reducing Hallucination](/examples/reducing_hallucinations_ai_agents/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/reducing_hallucinations_ai_agents/main.py) [![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/reducing_hallucinations_ai_agents/index.js)[![LLM](https://img.shields.io/badge/openai-api-white)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/how-to-reduce-hallucinations-from-llm-powered-agents-using-long-term-memory-72f262c3cc1f)| -| [Multimodal CLIP: DiffusionDB](/examples/multimodal_clip_diffusiondb/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/multimodal_clip_diffusiondb/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/etoai/multi-modal-ai-made-easy-with-lancedb-clip-5aaf8801c939)| -| [Multimodal CLIP: Youtube videos](/examples/multimodal_video_search/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/multimodal_video_search/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) |[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/etoai/multi-modal-ai-made-easy-with-lancedb-clip-5aaf8801c939)| -| [Multimodal Image + Text Search](/examples/multimodal_search/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/multimodal_search/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/etoai/multi-modal-ai-made-easy-with-lancedb-clip-5aaf8801c939) | -| [TransformersJS Embedding example](./examples/js-transformers/) |[![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/js-transformers/index.js) [![LLM](https://img.shields.io/badge/local-llm-green)](#) | | -| [Movie Recommender](/examples/movie-recommender/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/movie-recommender/main.py)| | -| [Product Recommender](./examples/product-recommender/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/product-recommender/main.py) | | -| [Audio Search](./examples/audio_search/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/audio_search/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) | | -| [Arxiv paper recommender](/examples/arxiv-recommender) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/arxiv-recommender/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) | | -| [Multi-lingual search](/examples/multi-lingual-wiki-qa) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](.examples/multi-lingual-wiki-qa/main.py) [![LLM](https://img.shields.io/badge/cohere-api-pink)](#) | | -| [Instruct-Multitask](./examples/instruct-multitask) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](.examples/instruct-multitask/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) | [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/multitask-embedding-with-lancedb-be18ec397543)| -| [Improve RAG with Re-ranking](/examples/RAG_re_ranking/) | Open In Colab [![LLM](https://img.shields.io/badge/local-llm-green)](#) |[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/simplest-method-to-improve-rag-pipeline-re-ranking-cf6eaec6d544)| -| [Improve RAG with FLARE](/examples/Advanced-RAG-with-FLARE) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](.examples/instruct-multitask/main.py) [![LLM](https://img.shields.io/badge/openai-api-white)](#) | [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/better-rag-with-active-retrieval-augmented-generation-flare-3b66646e2a9f)| -| [Improve RAG with HyDE](/examples/Advance-RAG-with-HyDE/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#)|[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/advanced-rag-precise-zero-shot-dense-retrieval-with-hyde-0946c54dfdcb)| -| [Improve RAG with LOTR ](/examples/Advance_RAG_LOTR/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) |[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/better-rag-with-lotr-lord-of-retriever-23c8336b9a35)| -| [Advanced RAG: Parent Document Retriever](/examples/parent_document_retriever/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#)|[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/modified-rag-parent-document-bigger-chunk-retriever-62b3d1e79bc6)| -| [RAG Fusion](/examples/RAG_Fusion/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#)| -| [Hybrid search BM25 & lancedb ](./examples/Hybrid_search_bm25_lancedb/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#)|[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/hybrid-search-combining-bm25-and-semantic-search-for-better-results-with-lan-1358038fe7e6)| -| [Evaluating Prompts with Prompttools](/examples/prompttools-eval-prompts/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![local LLM](https://img.shields.io/badge/local-llm-green)](#)| | -| [NER powered with Semantic Search](/tutorials/NER-powered-Semantic-Search/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/NER-powered-Semantic-Search/NER_powered_Semantic_Search_with_LanceDB.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) | [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/ner-powered-semantic-search-using-lancedb-51051dc3e493)| -[Sentiment Analysis : Analysing Hotel Reviews](/examples/Sentiment-Analysis-Analyse-Hotel-Reviews/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/Sentiment-Analysis-Analyse-Hotel-Reviews/Sentiment_Analysis_using_LanceDB.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) | [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/sentiment-analysis-using-lancedb-2da3cb1e3fa6)| -| [Facial Recognition](./examples/facial_recognition) | Open In Colab | -| [Accelerate Vector Search Applications Using OpenVINO](/tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/clip_text_image_search.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/accelerate-vector-search-applications-using-openvino-51366eabf866)| -| [Search Within Images](/examples/Contextual-Compression-with-RAG/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/search-within-images-with-sam-and-clip/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) |[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/search-within-an-image-331b54e4285e)| -| [Contextual-Compression-with-RAG](/examples/Contextual-Compression-with-RAG/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/Contextual-Compression-with-RAG/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) |[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/etoai/enhance-rag-integrate-contextual-compression-and-filtering-for-precision-a29d4a810301) | -| [Imagebind demo app](/examples/imagebind_demo/) | hf spaces| +| [Youtube transcript search bot](/examples/Youtube-Search-QA-Bot/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/Youtube-Search-QA-Bot/main.py) [![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/Youtube-Search-QA-Bot/index.js) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|| +| [Langchain: Code Docs QA bot](/examples/Code-Documentation-QA-Bot/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/Code-Documentation-QA-Bot/main.py) [![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/Code-Documentation-QA-Bot/index.js) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|| +| [Databricks DBRX Website Bot](./examples/databricks_DBRX_website_bot/) | [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/databricks_DBRX_website_bot/main.py) [![Databricks LLM](https://img.shields.io/badge/databricks-api-red)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| +| [CLI-based SDK Manual Chatbot with Phidata](/examples/CLI-SDK-Manual-Chatbot-Locally/) | [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/CLI-SDK-Manual-Chatbot-Locally/assistant.py) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| +| [TransformersJS Embedding example](./examples/js-transformers/) |[![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/js-transformers/index.js) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)| | +| [Inbuilt Hybrid Search](/examples/Inbuilt-Hybrid-Search) |Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)|| +| [Audio Search](./examples/audio_search/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/audio_search/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| | +| [Multi-lingual search](/examples/multi-lingual-wiki-qa) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/multi-lingual-wiki-qa/main.py) [![LLM](https://img.shields.io/badge/cohere-api-pink)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| | +| [Hybrid search BM25 & lancedb ](./examples/Hybrid_search_bm25_lancedb/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/hybrid-search-combining-bm25-and-semantic-search-for-better-results-with-lan-1358038fe7e6)| +| [Search Within Images](/examples/search-within-images-with-sam-and-clip/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/search-within-images-with-sam-and-clip/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/search-within-an-image-331b54e4285e)| +| [Accelerate Vector Search Applications Using OpenVINO](/examples/Accelerate-Vector-Search-Applications-Using-OpenVINO/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/Accelerate-Vector-Search-Applications-Using-OpenVINO/clip_text_image_search.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/accelerate-vector-search-applications-using-openvino-lancedb/)| +| [Multimodal CLIP: DiffusionDB](/examples/multimodal_clip_diffusiondb/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/multimodal_clip_diffusiondb/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/multi-modal-ai-made-easy-with-lancedb-clip-5aaf8801c939/)| +| [Multimodal CLIP: Youtube videos](/examples/multimodal_video_search/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/multimodal_video_search/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/multi-modal-ai-made-easy-with-lancedb-clip-5aaf8801c939/)| +| [Multimodal Image + Text Search](/examples/multimodal_search/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/multimodal_search/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/multi-modal-ai-made-easy-with-lancedb-clip-5aaf8801c939/)| +| [Movie Recommender](/examples/movie-recommender/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/movie-recommender/main.py) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| | +| [Product Recommender](./examples/product-recommender/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/product-recommender/main.py)[![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| | +| [Arxiv paper recommender](/examples/arxiv-recommender) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/arxiv-recommender/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| | +| [Improve RAG with Re-ranking](/examples/RAG_Reranking/) | Open In Colab [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/simplest-method-to-improve-rag-pipeline-re-ranking-cf6eaec6d544)| +| [Improve RAG with FLARE](/examples/Advanced-RAG-with-FLARE) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/Advanced-RAG-with-FLARE/app.py) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/better-rag-with-active-retrieval-augmented-generation-flare-3b66646e2a9f)| +| [Improve RAG with HyDE](/examples/Advance-RAG-with-HyDE/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/advanced-rag-precise-zero-shot-dense-retrieval-with-hyde-0946c54dfdcb)| +| [Improve RAG with LOTR ](/examples/Advance_RAG_LOTR/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/better-rag-with-lotr-lord-of-retriever-23c8336b9a35)| +| [Advanced RAG: Parent Document Retriever](/examples/parent_document_retriever/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/modified-rag-parent-document-bigger-chunk-retriever-62b3d1e79bc6)| +| [Query Expansion and Reranker ](/examples/QueryExpansion&Reranker/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/improving-rag-with-query-expansion-reranking-models/)| +| [RAG Fusion](/examples/RAG_Fusion/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)| +| [Contextual-Compression-with-RAG](/examples/Contextual-Compression-with-RAG/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/Contextual-Compression-with-RAG/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/enhance-rag-integrate-contextual-compression-and-filtering-for-precision-a29d4a810301/) | +| [Instruct-Multitask](./examples/instruct-multitask) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/instruct-multitask/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/multitask-embedding-with-lancedb-be18ec397543)| +| [Evaluating Prompts with Prompttools](/examples/prompttools-eval-prompts/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)| | +| [AI Agents: Reducing Hallucination](/examples/reducing_hallucinations_ai_agents/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/reducing_hallucinations_ai_agents/main.py) [![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/reducing_hallucinations_ai_agents/index.js) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#) |[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/how-to-reduce-hallucinations-from-llm-powered-agents-using-long-term-memory-72f262c3cc1f/)| +| [AI Trends Searcher with CrewAI](./examples/AI-Trends-with-CrewAI/) |Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/track-ai-trends-crewai-agents-rag/)| +| [SuperAgent Autogen](/examples/SuperAgent_Autogen) |Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|| +[Sentiment Analysis : Analysing Hotel Reviews](/examples/Sentiment-Analysis-Analyse-Hotel-Reviews/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/Sentiment-Analysis-Analyse-Hotel-Reviews/Sentiment_Analysis_using_LanceDB.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/sentiment-analysis-using-lancedb-2da3cb1e3fa6)| +| [Facial Recognition](./examples/facial_recognition) | Open In Colab [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| +| [Imagebind demo app](/examples/imagebind_demo/) | hf spaces [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| @@ -69,32 +75,40 @@ These are ready to use applications built using LanceDB serverless vector databa |-----------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|-------------------------------------------| | [YOLOExplorer](https://github.com/lancedb/yoloexplorer) | Iterate on your YOLO / CV datasets using SQL, Vector semantic search, and more within seconds | ![YOLOExplorer](https://github.com/lancedb/vectordb-recipes/assets/15766192/ae513a29-8f15-4e0b-99a1-ccd8272b6131) | | [Website Chatbot (Deployable Vercel Template)](https://github.com/lancedb/lancedb-vercel-chatbot) | Create a chatbot from the sitemap of any website/docs of your choice. Built using vectorDB serverless native javascript package. | ![Chatbot](assets/vercel-template.gif) | -| [Multi-Modal Search Engine](https://github.com/lancedb/vectordb-recipes/tree/rf/applications/multimodal-search) | Create a Multi-modal search engine app, to search images using both images or text | ![Search](https://github.com/lancedb/vectordb-recipes/assets/15766192/9805fec8-da72-44c0-be12-ddbe1c2d6afc)| | [ Chat with multiple URL/website ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/chat_with_anywebsite/) | Conversational AI for Any Website with Mistral,Bge Embedding & LanceDB |![webui_aa](https://github.com/akashAD98/vectordb-recipes/assets/62583018/47a9af87-2d94-4fd8-afa1-373db03bd728) | -| [ Hr chatbot ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/HR_chatbot/) | Hr chatbot - ask your personal query using zero-shot React agent & tools |![image](https://github.com/akashAD98/vectordb-recipes/assets/62583018/0ea78428-44be-4bff-874b-79b1fcc3b7d6)| | [ Talk with Youtube Video using GPT4 Vision API ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/talk-with-youtube-gpt4-vision-api/) | Talk with Youtube Video using GPT4 Vision API and Langchain |![demo](./assets/talk-using-gpt4v.gif) | | [ Talk with Podcast ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/talk-with-podcast) | Talk with Youtube Podcast using Ollama and insanely-fast-whisper | ![demo](./assets/talk-with-podcast.gif)| | [ Talk with Wikipedia ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/talk-with-wikipedia) | Talk with Wikipedia Pages | ![demo](./assets/talk-with-wikipedia.gif)| | [ Talk with Github ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/talk-with-github) | Talk with Github Codespaces using Qwen1.5 | ![demo](./assets/talk-with-github.gif)| -| [ Document Chat with Langroid ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/docchat-with-langroid) | Talk with your Documents using Langroid | ![demo](./assets/document-chat-langroid.png)| -| [ Fastapi RAG template ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/Chatbot_RAG_with_FASTAPI) | FastAPI based RAG template with Websocket support | ![image](./assets/chatbot_fastapi.png)| -| [ GTE MLX RAG ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/GTE_mlx_RAG/CLI_example.ipynb) | mlx based RAG model using lancedb api support | ![image](./assets/apple_mlx.png)| +| [ Document Chat with Langroid ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/docchat-with-langroid) | Talk with your Documents using Langroid | ![demo](https://github.com/lancedb/vectordb-recipes/assets/5846846/e55c45a3-b5b0-478b-bf77-290c0d69daae)| +| [ Hr chatbot ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/HR_chatbot/) | Hr chatbot - ask your personal query using zero-shot React agent & tools |![image](https://github.com/akashAD98/vectordb-recipes/assets/62583018/0ea78428-44be-4bff-874b-79b1fcc3b7d6)| +| [Advanced Chatbot with Parler TTS ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/Chatbot_with_Parler_TTS) | This Chatbot app uses Lancedb Hybrid search, FTS & reranker method with Parlers TTS library.|![image](./assets/chatbot_tts.png)| +| [Multi-Modal Search Engine](https://github.com/lancedb/vectordb-recipes/tree/rf/applications/multimodal-search) | Create a Multi-modal search engine app, to search images using both images or text | ![Search](https://github.com/lancedb/vectordb-recipes/assets/15766192/9805fec8-da72-44c0-be12-ddbe1c2d6afc)| +| [Multimodal Myntra Fashion Search Engine](https://github.com/ishandutta0098/lancedb-multimodal-myntra-fashion-search-engine) | This app uses OpenAI's CLIP to make a search engine that can understand and deal with both written words and pictures.|![image](./assets/myntra-search-engine.png)| | [Multilingual-RAG](https://github.com/lancedb/vectordb-recipes/tree/main/applications/Multilingual_RAG/) | Multilingual RAG with cohere embedding & support 100+ languages|![image](https://github.com/akashAD98/vectordb-recipes/assets/62583018/be65eb39-25c4-4441-98fc-6ded09689819)| +| [ Fastapi RAG template ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/Chatbot_RAG_with_FASTAPI) | FastAPI based RAG template with Websocket support | ![image](./assets/chatbot_fastapi.png)| +| [ GTE MLX RAG ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/GTE_mlx_RAG) | mlx based RAG model using lancedb api support | ![image](./assets/rag-mlx.png)| +| [ Healthcare Chatbot ](https://github.com/lancedb/vectordb-recipes/tree/main/applications/Healthcare_chatbot/) | Healthcare chatbot using domain specific LLM & Embedding model | ![image](./assets/chatbot_medical.png)| + + ## Tutorials Looking to get started with LLMs, vectorDBs, and the world of Generative AI? These in-depth tutorials and courses cover these concepts with practical follow along colabs where possible. | Tutorial | Interactive Environment | Blog Link | | --------- | -------------------------- | ----------- | | | | | -| [Corrective RAG with Langgraph](./tutorials/Corrective-RAG-with_Langgraph/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/Corrective-RAG-with_Langgraph/CRAG_with_Langgraph.ipynb) [![LLM](https://img.shields.io/badge/openai-api-white)](#) | | -| [Product Quantization: Compress High Dimensional Vectors](https://blog.lancedb.com/product-quantization-compress-high-dimensional-vectors-dfcba98fab47) | | [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/product-quantization-compress-high-dimensional-vectors-dfcba98fab47) | -| [LLMs, RAG, & the missing storage layer for AI](https://medium.com/etoai/llms-rag-the-missing-storage-layer-for-ai-28ded35fa984) | | [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/etoai/llms-rag-the-missing-storage-layer-for-ai-28ded35fa984) | -| [Fine-Tuning LLM using PEFT & QLoRA](./tutorials/fine-tuning_LLM_with_PEFT_QLoRA) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/fine-tuning_LLM_with_PEFT_QLoRA/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/optimizing-llms-a-step-by-step-guide-to-fine-tuning-with-peft-and-qlora-22eddd13d25b) | -| [Context-Aware Chatbot using Llama 2 & LanceDB](./tutorials/chatbot_using_Llama2_&_lanceDB) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/chatbot_using_Llama2_&_lanceDB/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/context-aware-chatbot-using-llama-2-lancedb-as-vector-database-4d771d95c755) | -| [A Primer on Text Chunking and its Types](./tutorials/different-types-text-chunking-in-RAG) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/different-types-text-chunking-in-RAG/Text_Chunking_on_RAG_application_with_LanceDB.ipynb) | [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/a-primer-on-text-chunking-and-its-types-a420efc96a13) | -| [NER powered Semantic Search](./tutorials/NER-powered-Semantic-Search) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/NER-powered-Semantic-Search/NER_powered_Semantic_Search_with_LanceDB.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/etoai/ner-powered-semantic-search-using-lancedb-51051dc3e493) | -| [Better RAG with FLARE](./tutorials/better-rag-FLAIR) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/better-rag-FLAIR/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![LLM](https://img.shields.io/badge/openai-api-white)](#)|[![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/@aksdesai1998/better-rag-enhancing-ai-with-active-retrieval-augmented-generation-flare-3b66646e2a9f) | -| [Accelerate Vector Search Applications Using OpenVINO](./tutorials/Sentiment-Analysis-using-LanceDB) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/clip_text_image_search.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#)| [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://blog.lancedb.com/accelerate-vector-search-applications-using-openvino-51366eabf866)| +| [Build RAG from Scratch](./tutorials/RAG-from-Scratch) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/RAG-from-Scratch/RAG_from_Scratch.ipynb) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| | +| [Local RAG from Scratch with Llama3](./tutorials/Local-RAG-from-Scratch) | [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./tutorials/Local-RAG-from-Scratch/rag.py) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| | +| [A Primer on Text Chunking and its Types](./tutorials/different-types-text-chunking-in-RAG) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/different-types-text-chunking-in-RAG/Text_Chunking_on_RAG_application_with_LanceDB.ipynb) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/a-primer-on-text-chunking-and-its-types-a420efc96a13) | +| [Langchain LlamaIndex Chunking](./tutorials/Langchain-LlamaIndex-Chunking) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/Langchain-LlamaIndex-Chunking/Langchain_Llamaindex_chunking.ipynb) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/chunking-techniques-with-langchain-and-llamaindex/) | +| [Comparing Cohere Rerankers with LanceDB](./tutorials/cohere-reranker) | [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/benchmarking-cohere-reranker-with-lancedb/) | +| [NER powered Semantic Search](./tutorials/NER-powered-Semantic-Search) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/NER-powered-Semantic-Search/NER_powered_Semantic_Search_with_LanceDB.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/ner-powered-semantic-search-using-lancedb-51051dc3e493) | +| [Product Quantization: Compress High Dimensional Vectors](https://blog.lancedb.com/benchmarking-lancedb-92b01032874a-2/) |[![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#) | [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/benchmarking-lancedb-92b01032874a-2/) | +| [Corrective RAG with Langgraph](./tutorials/Corrective-RAG-with_Langgraph/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/Corrective-RAG-with_Langgraph/CRAG_with_Langgraph.ipynb) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/implementing-corrective-rag-in-the-easiest-way-2/)| +| [LLMs, RAG, & the missing storage layer for AI](https://blog.lancedb.com/llms-rag-the-missing-storage-layer-for-ai-28ded35fa984) | [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/llms-rag-the-missing-storage-layer-for-ai-28ded35fa984/) | +| [Fine-Tuning LLM using PEFT & QLoRA](./tutorials/fine-tuning_LLM_with_PEFT_QLoRA) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/fine-tuning_LLM_with_PEFT_QLoRA/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/optimizing-llms-a-step-by-step-guide-to-fine-tuning-with-peft-and-qlora-22eddd13d25b) | +| [Context-Aware Chatbot using Llama 2 & LanceDB](./tutorials/chatbot_using_Llama2_&_lanceDB) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/chatbot_using_Llama2_&_lanceDB/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)| [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/context-aware-chatbot-using-llama-2-lancedb-as-vector-database-4d771d95c755) | +| [Better RAG with FLARE](./tutorials/better-rag-FLAIR) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/better-rag-FLAIR/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/better-rag-with-active-retrieval-augmented-generation-flare-3b66646e2a9f/) | diff --git a/applications/Chatbot_with_Parler_TTS/.env-example b/applications/Chatbot_with_Parler_TTS/.env-example new file mode 100644 index 00000000..a6f7e3f7 --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/.env-example @@ -0,0 +1 @@ +OPENAI_API_KEY = 'sk-youekey' diff --git a/applications/Chatbot_with_Parler_TTS/README.md b/applications/Chatbot_with_Parler_TTS/README.md new file mode 100644 index 00000000..e80719b4 --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/README.md @@ -0,0 +1,39 @@ +# Chat with PDF using LanceDB and Paler TTS +This application integrates a PDF chat functionality using LanceDB with advanced RAG (Retrieval-Augmented Generation) methods and +leverages the Paler Text-to-Speech (TTS) model for audio output. + +It is designed to enable high-quality text and speech interaction with PDF documents. +![image](../../assets/chatbot_tts.png) + +## Features + +Hybrid Search: Combines vector-based and keyword searches to improve result relevance. + +Full-Text Search (FTS): Utilizes Tavity for enhanced text search capabilities within documents. + +Colbert Reranker: Improves the accuracy of search results by reranking them based on relevance. + +Langchain Prompts: Controls LLM (Large Language Model) outputs using customized prompts for more tailored interactions. + +Paler Text-to-Speech (TTS): A lightweight, high-quality TTS model that mimics various speech styles and attributes. + +## Installation +Clone the repository and install the required packages: +``` +pip install -r requirements.txt +``` + +## Running the Application +Start the application by running the main script. This will launch a Gradio interface accessible via a web browser: + +create ```.env ``` file & pass the openai_api_key. or simply rename the ```.env-example ``` file to ```.env``` + +``` +python3 main.py # Gradio app will run +``` +## Outputs +The application provides two types of outputs from the processed PDF documents: + +Text: Extracted and processed text displayed in a user-friendly format. +Audio: Natural sounding speech generated from the text, customizable by speaker characteristics such as gender and pitch. + diff --git a/applications/Chatbot_with_Parler_TTS/constants.py b/applications/Chatbot_with_Parler_TTS/constants.py new file mode 100644 index 00000000..d73cadfc --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/constants.py @@ -0,0 +1,5 @@ +input_pdf = "https://d18rn0p25nwr6d.cloudfront.net/CIK-0001559720/8a9ebed0-815a-469a-87eb-1767d21d8cec.pdf" + +parler_tts_description = """ Utilize a male voice with an Indian English +accent for the chatbot. The speech should be clear, ensuring each word is +distinctly articulated in a crisp and confined audio environment. """ diff --git a/applications/Chatbot_with_Parler_TTS/main.py b/applications/Chatbot_with_Parler_TTS/main.py new file mode 100644 index 00000000..54dca71d --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/main.py @@ -0,0 +1,38 @@ +import gradio as gr +from rag_lance import get_rag_output +from tts_module import text_to_speech + + +def process_question(question, include_audio): + generated_text = get_rag_output(question) + if include_audio: + audio_file_path = text_to_speech(generated_text) + return generated_text, audio_file_path + else: + return generated_text, None # Return None for the audio part + + +iface = gr.Interface( + fn=process_question, + inputs=[ + gr.Textbox(lines=2, placeholder="Enter a question..."), + gr.Checkbox( + label="Include audio", value=True + ), # Default to True, can be unchecked by user + ], + outputs=[ + gr.Textbox(label="Generated Text"), + gr.Audio(label="Generated Audio", type="filepath"), # No optional keyword + ], + title="Advance RAG chatbot with TTS support", + description="Ask a question and get a text response along with its audio representation. Optionally, include the audio response.", + examples=[ + ["What is net profit of Airbnb ?"], + [ + "What are the specific factors contributing to Airbnb's increased operational expenses in the last fiscal year" + ], + ], +) + +if __name__ == "__main__": + iface.launch(debug=True, share=True) diff --git a/applications/Chatbot_with_Parler_TTS/prompt.py b/applications/Chatbot_with_Parler_TTS/prompt.py new file mode 100644 index 00000000..6723f64b --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/prompt.py @@ -0,0 +1,19 @@ +rag_prompt = """ +As an AI Assistant, your role is to provide authentic and accurate responses. Analyze the question and its context thoroughly to determine the most appropriate answer. + +**Instructions:** +- Understand the context and nuances of the question to identify relevant and precise information. +- if its general greeting then answer should be hellow how can i help you,please ask related quetions so i can help +- If an answer cannot be conclusively determined from the provided information, inform the user rather than making up an answer. +- When multiple interpretations of a question exist, briefly present these viewpoints, then provide the most plausible answer based on the context. +- Focus on providing concise and factual responses, excluding irrelevant details. +- For sensitive or potentially harmful topics, advise users to seek professional advice or consult authoritative sources. +- Keep your answer clear and within 500 words. + +**Context:** +{context} + +**Question:** +{question} + +""" diff --git a/applications/Chatbot_with_Parler_TTS/rag_lance.py b/applications/Chatbot_with_Parler_TTS/rag_lance.py new file mode 100644 index 00000000..cd4794d0 --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/rag_lance.py @@ -0,0 +1,113 @@ +import os +import torch +import lancedb +from dotenv import load_dotenv +from constants import input_pdf +from prompts import rag_prompt +from langchain_community.vectorstores import LanceDB +from langchain.prompts import PromptTemplate +from langchain_core.output_parsers import StrOutputParser +from langchain_core.runnables import RunnablePassthrough +from langchain_openai import ChatOpenAI, OpenAIEmbeddings +from langchain_core.prompts import ChatPromptTemplate +from langchain.document_loaders import PyPDFLoader +from langchain_core.messages import HumanMessage, SystemMessage +from langchain.text_splitter import RecursiveCharacterTextSplitter +from lancedb.embeddings import get_registry +from lancedb.pydantic import Vector, LanceModel +from lancedb.rerankers import ColbertReranker + + +load_dotenv() + + +class Document: + def __init__(self, page_content, metadata=None): + self.page_content = page_content + self.metadata = metadata if metadata is not None else {} + + def __repr__(self): + return f"Document(page_content='{self.page_content}', metadata={self.metadata})" + + +def get_rag_output(question): + input_pdf_file = input_pdf + + # Create your PDF loader + loader = PyPDFLoader(input_pdf_file) + + # Load the PDF document + documents = loader.load() + + # Chunk the financial report + text_splitter = RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=0) + docs = text_splitter.split_documents(documents) + + openai = get_registry().get("openai").create() + + class Schema(LanceModel): + text: str = openai.SourceField() + vector: Vector(openai.ndims()) = openai.VectorField() + + embedding_function = OpenAIEmbeddings() + + db = lancedb.connect("~/langchain") + table = db.create_table( + "airbnb", + schema=Schema, + mode="overwrite", + ) + + # Load the document into LanceDB + db = LanceDB.from_documents(docs, embedding_function, connection=table) + table.create_fts_index("text", replace=True) + + reranker = ColbertReranker() + docs_n = ( + table.search(question, query_type="hybrid") + .limit(5) + .rerank(reranker=reranker) + .to_pandas()["text"] + .to_list() + ) + + metadata = {"source": input_pdf_file} + docs_with_metadata = [ + Document(page_content=text, metadata=metadata) for text in docs_n + ] + + vectorstore = LanceDB.from_documents( + documents=docs_with_metadata, + embedding=OpenAIEmbeddings(openai_api_key=os.environ["OPENAI_API_KEY"]), + ) + + retriever = vectorstore.as_retriever() + + rag_prompt_template = rag_prompt + + prompt = PromptTemplate( + template=rag_prompt_template, + input_variables=[ + "context", + "question", + ], + ) + + def format_docs(docs): + return "\n\n".join(doc.page_content for doc in docs) + + llm = ChatOpenAI( + model="gpt-3.5-turbo", + temperature=0, + openai_api_key=os.environ["OPENAI_API_KEY"], + ) + + rag_chain = ( + {"context": retriever | format_docs, "question": RunnablePassthrough()} + | prompt + | llm + | StrOutputParser() + ) + + output = rag_chain.invoke(question) + return output diff --git a/applications/Chatbot_with_Parler_TTS/requirements.txt b/applications/Chatbot_with_Parler_TTS/requirements.txt new file mode 100644 index 00000000..f5673ae3 --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/requirements.txt @@ -0,0 +1,10 @@ +pip install langchain +langchain-community +langchain-openai +lancedb +bs4 +tantivy==0.20.1 +pypdf +gradio +torch +git+https://github.com/huggingface/parler-tts.git diff --git a/applications/Chatbot_with_Parler_TTS/tts_module.py b/applications/Chatbot_with_Parler_TTS/tts_module.py new file mode 100644 index 00000000..94d49be4 --- /dev/null +++ b/applications/Chatbot_with_Parler_TTS/tts_module.py @@ -0,0 +1,23 @@ +import torch +import soundfile as sf +from transformers import AutoTokenizer +from parler_tts import ParlerTTSForConditionalGeneration + + +def text_to_speech(text, filename="output_audio.wav"): + device = "cuda:0" if torch.cuda.is_available() else "cpu" + model = ParlerTTSForConditionalGeneration.from_pretrained( + "parler-tts/parler_tts_mini_v0.1" + ).to(device) + tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler_tts_mini_v0.1") + + # description = "A clear and articulate Indian English male voice with a medium pitch and neutral accent with a friendly and engaging tone. The audio quality is high, ensuring that each word is easily understandable without any background noise." + description = "Utilize a male voice with a low pitch and an Indian English accent for the chatbot. The speech should be fast yet clear, ensuring each word is distinctly articulated in a crisp and confined audio environment." + input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device) + prompt_input_ids = tokenizer(text, return_tensors="pt").input_ids.to(device) + + generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids) + audio_arr = generation.cpu().numpy().squeeze() + sf.write(filename, audio_arr, model.config.sampling_rate) + + return filename diff --git a/applications/Healthcare_chatbot/README.md b/applications/Healthcare_chatbot/README.md new file mode 100644 index 00000000..a1b60132 --- /dev/null +++ b/applications/Healthcare_chatbot/README.md @@ -0,0 +1,47 @@ +## Overview +This project introduces a healthcare-related Retrieval-Augmented Generation (RAG) chatbot, designed to deliver quick responses to medical inquiries. Utilizing OpenBioLLM-Llama3 / openai llm and the NeuML's PubMedBERT for embedding, +this chatbot is adept at processing and responding to medical data queries. + +![image](../../assets/chatbot_medical.png) + +## Key Features +### Language Model: + +To utilize OpenBioLLM-Llama3 .download model in the local system & pass the path of it +link for downloading gguf version model https://huggingface.co/PrunaAI/OpenBioLLM-Llama3-8B-GGUF-smashed +change this model based on requirements & performance + +### Embeddings: +Uses NeuML's PubMedBERT (https://huggingface.co/NeuML/pubmedbert-base-embeddings), which is fine-tuned on PubMed data with the BERT architecture to ensure high relevance and contextual accuracy in responses. + +### Database and Framework: +Incorporates the LanceDB vector database and Cohere reranker within the LangChain framework to enhance efficient query processing and response generation. + +## Installation +Follow these steps to set up the chatbot on your local machine: + +Clone the repository & install + +```pip install -r requirements.txt``` + +## Start the application: +``` +uvicorn main:app --reload +``` + + +After launching the server, open the ```index.html ``` +file in any web browser to start interacting with the chatbot. + + +## Usage + +Use the chatbot via the provided web interface. Enter your medical-related questions into the chat input box, and receive responses generated from the integrated language models and databases. + + + +## Note +Please be advised that while the chatbot provides information based on learned data, it can occasionally deliver incorrect information or miss critical nuances. Always consult with a healthcare professional before making any medical decisions based on advice received from the chatbot. + +## Disclaimer +This chatbot is intended for informational purposes only and should not be used as a substitute for professional medical advice, diagnosis, or treatment. Always seek the advice of your physician or other qualified health provider with any questions you may have regarding a medical condition diff --git a/applications/Healthcare_chatbot/data/DIABETES.pdf b/applications/Healthcare_chatbot/data/DIABETES.pdf new file mode 100644 index 00000000..d77cdf97 Binary files /dev/null and b/applications/Healthcare_chatbot/data/DIABETES.pdf differ diff --git a/applications/Healthcare_chatbot/data/HBP_Guide_English_2018.pdf b/applications/Healthcare_chatbot/data/HBP_Guide_English_2018.pdf new file mode 100644 index 00000000..d7007e1f Binary files /dev/null and b/applications/Healthcare_chatbot/data/HBP_Guide_English_2018.pdf differ diff --git a/applications/Healthcare_chatbot/data/cancer.pdf b/applications/Healthcare_chatbot/data/cancer.pdf new file mode 100644 index 00000000..c1bbea51 Binary files /dev/null and b/applications/Healthcare_chatbot/data/cancer.pdf differ diff --git a/applications/Healthcare_chatbot/data/data.txt b/applications/Healthcare_chatbot/data/data.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/applications/Healthcare_chatbot/data/data.txt @@ -0,0 +1 @@ + diff --git a/applications/Healthcare_chatbot/index.html b/applications/Healthcare_chatbot/index.html new file mode 100644 index 00000000..60139efd --- /dev/null +++ b/applications/Healthcare_chatbot/index.html @@ -0,0 +1,181 @@ + + + + + + Medical Chatbot + + + + +
+
Healthcare AI Chatbot
+
+ +
+ +
+ + + + diff --git a/applications/Healthcare_chatbot/main.py b/applications/Healthcare_chatbot/main.py new file mode 100644 index 00000000..2413a93e --- /dev/null +++ b/applications/Healthcare_chatbot/main.py @@ -0,0 +1,99 @@ +import os +import uvicorn +from fastapi import FastAPI +from pydantic import BaseModel +from langchain import hub +import logging +from langchain_text_splitters import RecursiveCharacterTextSplitter +from langchain_community.llms import LlamaCpp +from langchain_community.vectorstores import LanceDB +from langchain.document_loaders import PyPDFLoader +from langchain_community.embeddings import SentenceTransformerEmbeddings +from langchain_openai import ChatOpenAI +from langchain.chains import RetrievalQA +from langchain_cohere import CohereRerank +from langchain.retrievers.contextual_compression import ContextualCompressionRetriever +from langchain_cohere import CohereRerank +from fastapi.middleware.cors import CORSMiddleware +from langchain_community.document_loaders import PyPDFLoader, DirectoryLoader +from langchain_community.llms import LlamaCpp + + +# Environment variables for sensitive information +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") +COHERE_API_KEY = os.getenv("COHERE_API_KEY", "") + +app = FastAPI(title="Medical Information Retrieval API") + + +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + + +# Load the document +DATA_PATH = "data/" + + +loader = DirectoryLoader(DATA_PATH, glob="*.pdf", loader_cls=PyPDFLoader) + +docs = loader.load() +logging.info("Document loader done.") + +# Set up the text processing and model chain +# llm = ChatOpenAI(model="gpt-4", temperature=0, openai_api_key=OPENAI_API_KEY) + +# download weights from https://huggingface.co/PrunaAI/OpenBioLLM-Llama3-8B-GGUF-smashed/tree/main +llm = LlamaCpp( + model_path="/content/OpenBioLLM-Llama3-8B.Q4_K_S.gguf", # path of gguf weight + temperature=0.75, + n_ctx=2048, + verbose=False, # Verbose is required to pass to the callback manager +) + +embeddings_med = SentenceTransformerEmbeddings( + model_name="NeuML/pubmedbert-base-embeddings" +) +text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) + +logging.info("Embedding and LLM setup done.") + +splits = text_splitter.split_documents(docs) +vectorstore = LanceDB.from_documents(documents=splits, embedding=embeddings_med) +retriever = vectorstore.as_retriever() +logging.info("Retriever setup done.") + +compressor = CohereRerank(cohere_api_key=COHERE_API_KEY) +compression_retriever = ContextualCompressionRetriever( + base_compressor=compressor, base_retriever=retriever +) +logging.info("Cohere compression retriever setup done.") + +chain = RetrievalQA.from_chain_type(llm=llm, retriever=compression_retriever) +logging.info("Chain ready for query processing.") + +chain = RetrievalQA.from_chain_type(llm=llm, retriever=compression_retriever) + + +class QueryRequest(BaseModel): + query: str + + +@app.post("/query/", response_model=dict) +async def handle_query(request: QueryRequest): + try: + compressed_docs = compression_retriever.invoke(request.query) + # Assuming pretty_print_docs function returns a string + response = chain({"query": request.query}) + print("response", response["result"]) + return {"answer": response["result"]} + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + + +if __name__ == "__main__": + uvicorn.run(app, host="0.0.0.0", port=8000) diff --git a/applications/Healthcare_chatbot/requirements.txt b/applications/Healthcare_chatbot/requirements.txt new file mode 100644 index 00000000..dbf333ba --- /dev/null +++ b/applications/Healthcare_chatbot/requirements.txt @@ -0,0 +1,11 @@ +langchain +langchain-community +langchainhub +langchain-openai +lancedb +PyPDF2 +llama-cpp-python # for using openbiollm +huggingface-hub +sentence-transformers +ctransformers +langchain-cohere diff --git a/applications/multimodal-search/package.json b/applications/multimodal-search/package.json index d598fcee..8001d3ff 100644 --- a/applications/multimodal-search/package.json +++ b/applications/multimodal-search/package.json @@ -23,7 +23,7 @@ "eslint": "8.45.0", "eslint-config-next": "13.4.12", "jimp": "^0.22.10", - "next": "13.4.12", + "next": "14.1.1", "openai": "^3.3.0", "openai-edge": "^1.2.2", "postcss": "8.4.27", diff --git a/assets/RAG-flow.png b/assets/RAG-flow.png new file mode 100644 index 00000000..e6680465 Binary files /dev/null and b/assets/RAG-flow.png differ diff --git a/assets/RAG-locally.png b/assets/RAG-locally.png new file mode 100644 index 00000000..468a42e7 Binary files /dev/null and b/assets/RAG-locally.png differ diff --git a/assets/apple_mlx.png b/assets/apple_mlx.png deleted file mode 100644 index 7aae75ad..00000000 Binary files a/assets/apple_mlx.png and /dev/null differ diff --git a/assets/chatbot_medical.png b/assets/chatbot_medical.png new file mode 100644 index 00000000..3ce315c2 Binary files /dev/null and b/assets/chatbot_medical.png differ diff --git a/assets/chatbot_tts.png b/assets/chatbot_tts.png new file mode 100644 index 00000000..e0aaf6a6 Binary files /dev/null and b/assets/chatbot_tts.png differ diff --git a/assets/chunking.png b/assets/chunking.png new file mode 100644 index 00000000..5acd5823 Binary files /dev/null and b/assets/chunking.png differ diff --git a/assets/crewai.png b/assets/crewai.png new file mode 100644 index 00000000..94cfa86c Binary files /dev/null and b/assets/crewai.png differ diff --git a/assets/critique-based-contexting.png b/assets/critique-based-contexting.png new file mode 100644 index 00000000..5dc3326a Binary files /dev/null and b/assets/critique-based-contexting.png differ diff --git a/assets/myntra-search-engine.png b/assets/myntra-search-engine.png new file mode 100644 index 00000000..ec355360 Binary files /dev/null and b/assets/myntra-search-engine.png differ diff --git a/assets/query-expansion.png b/assets/query-expansion.png new file mode 100644 index 00000000..8906f04a Binary files /dev/null and b/assets/query-expansion.png differ diff --git a/assets/rag-mlx.png b/assets/rag-mlx.png new file mode 100644 index 00000000..84ed337d Binary files /dev/null and b/assets/rag-mlx.png differ diff --git a/assets/reranker.webp b/assets/reranker.webp new file mode 100644 index 00000000..fa5bd671 Binary files /dev/null and b/assets/reranker.webp differ diff --git a/assets/sdk-manual-cli-chatbot.png b/assets/sdk-manual-cli-chatbot.png new file mode 100644 index 00000000..4ca1a292 Binary files /dev/null and b/assets/sdk-manual-cli-chatbot.png differ diff --git a/assets/search-within-image-flow.png b/assets/search-within-image-flow.png new file mode 100644 index 00000000..42cf525f Binary files /dev/null and b/assets/search-within-image-flow.png differ diff --git a/assets/search-within-image.png b/assets/search-within-image.png new file mode 100644 index 00000000..50dc51f3 Binary files /dev/null and b/assets/search-within-image.png differ diff --git a/assets/superagent-autogen.png b/assets/superagent-autogen.png new file mode 100644 index 00000000..d41d2484 Binary files /dev/null and b/assets/superagent-autogen.png differ diff --git a/assets/vercel-template.gif b/assets/vercel-template.gif index 6c16d7de..5e684974 100644 Binary files a/assets/vercel-template.gif and b/assets/vercel-template.gif differ diff --git a/compile_testing.js b/compile_testing.js index c385a1a3..37fdc619 100644 --- a/compile_testing.js +++ b/compile_testing.js @@ -3,7 +3,7 @@ var dir = './testing-folder'; const excluded_folders = [ "Code-Documentation-QA-Bot", - "youtube_bot", + "Youtube-Search-QA-Bot", "reducing_hallucinations_ai_agents", "product-recommender" ]; diff --git a/examples/AI-Trends-with-CrewAI/CrewAI_AI_Trends.ipynb b/examples/AI-Trends-with-CrewAI/CrewAI_AI_Trends.ipynb new file mode 100644 index 00000000..e0ef4104 --- /dev/null +++ b/examples/AI-Trends-with-CrewAI/CrewAI_AI_Trends.ipynb @@ -0,0 +1,605 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## AI Trends Searcher using CrewAI RAG" + ], + "metadata": { + "id": "L6CYH07ysGHi" + } + }, + { + "cell_type": "markdown", + "source": [ + "Using Crew AI to create sophisticated AI news search and writer agents. Using CrewAI RAG create AI Assistants to Run News Agency for AI trends with summarized reports.\n", + "\n", + "This innovative approach combines Retrieving and Generating information, revolutionising how we search for AI news articles, analyse them, and deliver in-depth reports.\n", + "\n", + "![Screenshot from 2024-03-22 16-23-32.png](data:image/png;base64,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)" + ], + "metadata": { + "id": "sSLA0KQ8qrcX" + } + }, + { + "cell_type": "markdown", + "source": [ + "Get Free News API Key at [link](https://newsapi.org/)" + ], + "metadata": { + "id": "Q_wvRRAXxPSR" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Install required packages\n" + ], + "metadata": { + "id": "HV1DyBd2RHrN" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install crewai langchain-community langchain-openai langchain-google-genai requests duckduckgo-search lancedb -q" + ], + "metadata": { + "id": "xOj-BuKARJrH", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ff6cfb82-0400-4c09-f797-c57adf95a0ed" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/62.5 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.5/62.5 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.9/1.9 MB\u001b[0m \u001b[31m29.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m22.0/22.0 MB\u001b[0m \u001b[31m34.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m191.4/191.4 kB\u001b[0m \u001b[31m21.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m812.8/812.8 kB\u001b[0m \u001b[31m51.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m267.1/267.1 kB\u001b[0m \u001b[31m22.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m60.1/60.1 kB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m106.1/106.1 kB\u001b[0m \u001b[31m11.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m276.8/276.8 kB\u001b[0m \u001b[31m25.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m87.5/87.5 kB\u001b[0m \u001b[31m9.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m49.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m137.4/137.4 kB\u001b[0m \u001b[31m11.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.7/5.7 MB\u001b[0m \u001b[31m49.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m144.8/144.8 kB\u001b[0m \u001b[31m13.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m22.1/22.1 MB\u001b[0m \u001b[31m37.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.4/49.4 kB\u001b[0m \u001b[31m5.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m233.4/233.4 kB\u001b[0m \u001b[31m21.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m525.5/525.5 kB\u001b[0m \u001b[31m44.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m131.5/131.5 kB\u001b[0m \u001b[31m13.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m41.3/41.3 kB\u001b[0m \u001b[31m4.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m278.2/278.2 kB\u001b[0m \u001b[31m27.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.1/71.1 kB\u001b[0m \u001b[31m7.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m72.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.0/53.0 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m9.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.8/50.8 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.7/98.7 kB\u001b[0m \u001b[31m11.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m78.7/78.7 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.4/2.4 MB\u001b[0m \u001b[31m59.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m91.9/91.9 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m60.8/60.8 kB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.4/5.4 MB\u001b[0m \u001b[31m64.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.8/6.8 MB\u001b[0m \u001b[31m65.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.3/67.3 kB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m698.9/698.9 kB\u001b[0m \u001b[31m51.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m69.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.6/67.6 kB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m9.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.9/71.9 kB\u001b[0m \u001b[31m8.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.0/46.0 kB\u001b[0m \u001b[31m5.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m341.4/341.4 kB\u001b[0m \u001b[31m32.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m86.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m54.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m130.2/130.2 kB\u001b[0m \u001b[31m14.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m86.8/86.8 kB\u001b[0m \u001b[31m8.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Building wheel for pypika (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Importing modules" + ], + "metadata": { + "id": "HNnorUJjbVPH" + } + }, + { + "cell_type": "code", + "source": [ + "from crewai import Agent, Task, Crew, Process\n", + "from langchain_openai import ChatOpenAI\n", + "from langchain_google_genai import ChatGoogleGenerativeAI\n", + "from langchain_core.retrievers import BaseRetriever\n", + "from langchain_openai import OpenAIEmbeddings\n", + "from langchain_community.embeddings import LlamafileEmbeddings\n", + "from langchain.tools import tool\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "import requests, os\n", + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.vectorstores import LanceDB\n", + "from langchain_community.tools import DuckDuckGoSearchRun" + ], + "metadata": { + "id": "sk-GEhxCbUDU" + }, + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Set API keys as environment variable" + ], + "metadata": { + "id": "nRv8-Ja1R8S6" + } + }, + { + "cell_type": "code", + "source": [ + "os.environ[\"NEWSAPI_KEY\"] = \"*********\"" + ], + "metadata": { + "id": "J9U8qs3aRLfh" + }, + "execution_count": 7, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Using OpenAI embedding function and LLM" + ], + "metadata": { + "id": "s6cLIDz9fzB5" + } + }, + { + "cell_type": "code", + "source": [ + "# @title LLM Config\n", + "\n", + "LLM = \"OPENAI_GPT4\" # @param [\"OPENAI_GPT4\", \"GEMINI_PRO\"]\n", + "API_KEY = \"Enter your API Key\" # @param {type:\"string\"}" + ], + "metadata": { + "id": "6tNMJXRSVy7e" + }, + "execution_count": 20, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "if LLM == \"OPENAI_GPT4\":\n", + " os.environ[\"OPENAI_API_KEY\"] = API_KEY\n", + " embedding_function = OpenAIEmbeddings()\n", + " llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "elif LLM == \"GEMINI_PRO\":\n", + " os.environ[\"GOOGLE_API_KEY\"] = API_KEY\n", + " embeddding_function = LlamafileEmbeddings()\n", + " llm = ChatGoogleGenerativeAI(model=\"gemini-pro\")" + ], + "metadata": { + "id": "ljQ1FLt2fx_F" + }, + "execution_count": 9, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Set up the LanceDB vectorDB" + ], + "metadata": { + "id": "251A9PjVT6s3" + } + }, + { + "cell_type": "code", + "source": [ + "import lancedb\n", + "\n", + "\n", + "# creating lancedb table with dummy data\n", + "def lanceDBConnection(dataset):\n", + " db = lancedb.connect(\"/tmp/lancedb\")\n", + " table = db.create_table(\"tb\", data=dataset, mode=\"overwrite\")\n", + " return table\n", + "\n", + "\n", + "embedding = OpenAIEmbeddings()\n", + "emb = embedding.embed_query(\"hello_world\")\n", + "dataset = [{\"vector\": emb, \"text\": \"dummy_text\"}]\n", + "\n", + "# LanceDB as vector store\n", + "table = lanceDBConnection(dataset)" + ], + "metadata": { + "id": "-jAOVSSISABN" + }, + "execution_count": 10, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Save latest AI News in vectorDB" + ], + "metadata": { + "id": "0AJygbxmb_gd" + } + }, + { + "cell_type": "code", + "source": [ + "# Save the news articles in a database\n", + "class SearchNewsDB:\n", + " @tool(\"News DB Tool\")\n", + " def news(query: str):\n", + " \"\"\"Fetch news articles and process their contents.\"\"\"\n", + " API_KEY = os.getenv(\"NEWSAPI_KEY\") # Fetch API key from environment variable\n", + " base_url = f\"https://newsapi.org/v2/top-headlines?sources=techcrunch\"\n", + "\n", + " params = {\n", + " \"sortBy\": \"publishedAt\",\n", + " \"apiKey\": API_KEY,\n", + " \"language\": \"en\",\n", + " \"pageSize\": 15,\n", + " }\n", + "\n", + " response = requests.get(base_url, params=params)\n", + " if response.status_code != 200:\n", + " return \"Failed to retrieve news.\"\n", + "\n", + " articles = response.json().get(\"articles\", [])\n", + " all_splits = []\n", + " for article in articles:\n", + " # Assuming WebBaseLoader can handle a list of URLs\n", + " loader = WebBaseLoader(article[\"url\"])\n", + " docs = loader.load()\n", + "\n", + " text_splitter = RecursiveCharacterTextSplitter(\n", + " chunk_size=1000, chunk_overlap=200\n", + " )\n", + " splits = text_splitter.split_documents(docs)\n", + " all_splits.extend(splits) # Accumulate splits from all articles\n", + "\n", + " # Index the accumulated content splits if there are any\n", + " if all_splits:\n", + " vectorstore = LanceDB.from_documents(\n", + " all_splits, embedding=embedding_function, connection=table\n", + " )\n", + " retriever = vectorstore.similarity_search(query)\n", + " return retriever\n", + " else:\n", + " return \"No content available for processing.\"" + ], + "metadata": { + "id": "NQE3rljxb4SI" + }, + "execution_count": 11, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Building RAG to get news from vectorDB" + ], + "metadata": { + "id": "tKrbDvCdcRoK" + } + }, + { + "cell_type": "code", + "source": [ + "# Get the news articles from the database\n", + "class GetNews:\n", + " @tool(\"Get News Tool\")\n", + " def news(query: str) -> str:\n", + " \"\"\"Search LanceDB for relevant news information based on a query.\"\"\"\n", + " vectorstore = LanceDB(embedding=embedding_function, connection=table)\n", + " retriever = vectorstore.similarity_search(query)\n", + " return retriever" + ], + "metadata": { + "id": "xGtyZZaQcPmr" + }, + "execution_count": 12, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Setup search tool for News articles on the web" + ], + "metadata": { + "id": "BSumWCcRUUDl" + } + }, + { + "cell_type": "code", + "source": [ + "# Make sure to Install duckduckgo-search for this example\n", + "# !pip install -U duckduckgo-search\n", + "\n", + "search_tool = DuckDuckGoSearchRun()" + ], + "metadata": { + "id": "DiaqNKjsT4jc" + }, + "execution_count": 13, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Setting up Agents" + ], + "metadata": { + "id": "-a9pqtdqUgtJ" + } + }, + { + "cell_type": "code", + "source": [ + "# Defining Search and Writer agents with roles and goals\n", + "news_search_agent = Agent(\n", + " role=\"AI News Searcher\",\n", + " goal=\"Generate key points for each news article from the latest news\",\n", + " backstory=\"\"\"You work at a leading tech think tank.\n", + " Your expertise lies in identifying emerging trends in field of AI.\n", + " You have a knack for dissecting complex data and presenting\n", + " actionable insights.\"\"\",\n", + " tools=[SearchNewsDB().news],\n", + " allow_delegation=True,\n", + " verbose=True,\n", + " llm=llm,\n", + ")\n", + "\n", + "writer_agent = Agent(\n", + " role=\"Writer\",\n", + " goal=\"Identify all the topics received. Use the Get News Tool to verify the each topic to search. Use the Search tool for detailed exploration of each topic. Summarise the retrieved information in depth for every topic.\",\n", + " backstory=\"\"\"You are a renowned Content Strategist, known for\n", + " your insightful and engaging articles.\n", + " You transform complex concepts into compelling narratives.\"\"\",\n", + " tools=[GetNews().news, search_tool],\n", + " allow_delegation=True,\n", + " verbose=True,\n", + " llm=llm,\n", + ")" + ], + "metadata": { + "id": "SLDSHOuCUXna" + }, + "execution_count": 14, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Tasks to perform" + ], + "metadata": { + "id": "dmdxvELxV6J1" + } + }, + { + "cell_type": "code", + "source": [ + "# Creating search and writer tasks for agents\n", + "news_search_task = Task(\n", + " description=\"\"\"Conduct a comprehensive analysis of the latest advancements in AI in 2024.\n", + " Identify key trends, breakthrough technologies, and potential industry impacts.\n", + " Your final answer MUST be a full analysis report\"\"\",\n", + " expected_output=\"Create key points list for each news\",\n", + " agent=news_search_agent,\n", + " tools=[SearchNewsDB().news],\n", + ")\n", + "\n", + "writer_task = Task(\n", + " description=\"\"\"Using the insights provided, summaries each post of them\n", + " highlights the most significant AI advancements.\n", + " Your post should be informative yet accessible, catering to a tech-savvy audience.\n", + " Make it sound cool, avoid complex words so it doesn't sound like AI.\n", + " Your final answer MUST not be the more than 50 words.\"\"\",\n", + " expected_output=\"Write a short summary under 50 words for each news Headline seperately\",\n", + " agent=writer_agent,\n", + " context=[news_search_task],\n", + " tools=[GetNews().news, search_tool],\n", + ")" + ], + "metadata": { + "id": "9ZG9GxqWV0md" + }, + "execution_count": 15, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Create a Crew" + ], + "metadata": { + "id": "yvjya2FzWR5m" + } + }, + { + "cell_type": "code", + "source": [ + "# Instantiate Crew with Agents and their tasks\n", + "news_crew = Crew(\n", + " agents=[news_search_agent, writer_agent],\n", + " tasks=[news_search_task, writer_task],\n", + " process=Process.sequential,\n", + " manager_llm=llm,\n", + ")" + ], + "metadata": { + "id": "yYykbGq2WRSP" + }, + "execution_count": 16, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "news_crew" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xSBr8D6tWloT", + "outputId": "2d2114b3-ecf5-47c4-84f8-95cb5fe3280a" + }, + "execution_count": 17, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Crew(id=25414146-d590-489a-87db-cbcfe14ddda9, process=sequential, number_of_agents=2, number_of_tasks=2)" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Kickoff the crew - let the magic happen" + ], + "metadata": { + "id": "-tjmzH9cXOaB" + } + }, + { + "cell_type": "code", + "source": [ + "# Execute the crew to see RAG in action\n", + "result = news_crew.kickoff()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VU3LdZmIWqQH", + "outputId": "3e462e46-a359-41bb-aedd-409b9a85e596" + }, + "execution_count": 18, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new CrewAgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3mI need to gather the latest information on advancements in AI from 2024 to identify key trends, breakthrough technologies, and potential industry impacts. To do this effectively, I will first use the News DB Tool to fetch recent news articles related to AI advancements in 2024. This will provide a foundation for a comprehensive analysis.\n", + "\n", + "Action: News DB Tool\n", + "\n", + "Action Input: {\"query\": \"AI advancements 2024\"}\n", + "\u001b[0m\u001b[93m \n", + "\n", + "[Document(page_content='This is likely a big part of the reason it might view home robots as “the next big thing” (to quote Bloomberg quoting its sources). Apple has no doubt pumped a tremendous amount of resources into driving technologies. If those could be repurposed for a different project, maybe it won’t all be for naught.\\nWhile the reports note that Apple “hasn’t committed” to either the robotic smart screen or mobile robot that are said to exist somewhere inside the company’s skunkworks, it has already put Apple Home execs Matt Costello and Brian Lynch on the hardware side of things, while SVP of Machine Learning and AI Strategy John Giannandrea is said to be involved on the AI side of things.\\nImage Credits: Brian Heater', metadata={'vector': [0.004069294314831495, -0.020910432562232018, 0.008496551774442196, -0.0071997810155153275, 0.012758336029946804, 5.0971713790204376e-05, -0.012109951116144657, 0.025989454239606857, -0.0032014036551117897, -0.026070501655340195, 0.01812777854502201, 0.01337970606982708, -0.015101980417966843, -0.00028641248354688287, -0.006784409284591675, 0.01982979103922844, 0.02367958053946495, 0.02078886143863201, 0.0065885428339242935, -0.004569091834127903, -0.027772514149546623, 0.025395100936293602, 0.005805076565593481, -0.0077603645622730255, -0.0045758457854390144, -0.0027759005315601826, 0.017290281131863594, -0.027164652943611145, 0.0013111233711242676, -0.001923206029459834, 0.019424550235271454, -0.022761033847928047, -0.01996487006545067, -0.0017678637523204088, -0.03141967952251434, -0.021221118047833443, 0.012704304419457912, -0.010360660031437874, 0.024314457550644875, -0.024800747632980347, 0.022855589166283607, 0.03193298727273941, -0.0012503372272476554, -0.02145075425505638, -0.03790353611111641, 0.019478581845760345, -0.004947316832840443, 0.0032469932921230793, -0.004677155986428261, 0.007557744160294533, 0.021032005548477173, 0.028258802369236946, -0.040740225464105606, -0.015966493636369705, -0.021883010864257812, -0.003437794279307127, -0.012906924821436405, 0.016831006854772568, 0.015277584083378315, 0.0032740093301981688, 0.016831006854772568, -0.0032672551460564137, -0.010448462329804897, 0.0035998905077576637, -0.018154794350266457, -0.0019384026527404785, -0.019275961443781853, -0.00587261701002717, 0.017047135159373283, 0.0011431172024458647, 0.03566120192408562, 0.013183839619159698, 0.025611229240894318, -0.008530321530997753, 0.02477372996509075, 8.844858712109271e-06, -0.0034749412443488836, -0.008489797823131084, -0.012447651475667953, 0.009185461327433586, -0.004889907315373421, -0.001275664777494967, -0.021126560866832733, 0.025638245046138763, 0.025746308267116547, 0.012785352766513824, -0.0062744808383286, 0.016209637746214867, 0.006081991363316774, 0.024706190451979637, 0.0018421579152345657, 0.0152100445702672, -0.009874370880424976, 0.02059974893927574, -0.005602456163614988, 0.025165462866425514, -0.00328076328150928, 0.01375793106853962, -0.02139672264456749, -0.03471564128994942, -0.005075642839074135, -0.008537075482308865, -0.031527746468782425, -0.006396053358912468, -0.018249351531267166, 0.024273933842778206, 0.006703360937535763, -0.003101781941950321, 0.018478987738490105, 0.007172765210270882, -0.00671349186450243, 0.012150474824011326, 0.002937996992841363, -0.020045919343829155, -0.0005297681200318038, -0.040686190128326416, 0.006916112266480923, -0.0069768987596035, -0.017925158143043518, -0.01873563975095749, 0.018627576529979706, 0.020059427246451378, 0.028015658259391785, -0.00741590978577733, 0.02476022206246853, 0.0042820461094379425, -0.026367679238319397, -0.005285017658025026, 0.007962984964251518, -0.020275555551052094, 0.02082938514649868, -0.02324732206761837, 0.007510466035455465, 0.015412664972245693, -0.013156822882592678, 0.012677287682890892, -0.013670128770172596, 0.010137777775526047, -0.018370922654867172, -0.006916112266480923, 0.016668910160660744, 0.0038531662430614233, -0.019154388457536697, 0.012947448529303074, -0.01873563975095749, -0.0017104545840993524, 0.018587050959467888, -0.00033727867412380874, 0.007084962911903858, 0.020275555551052094, -0.025800341740250587, -0.024206392467021942, -0.01048223301768303, 0.04060514271259308, 0.020748337730765343, 0.006176547612994909, 0.006416315212845802, -0.0032469932921230793, -0.018627576529979706, 0.0014968587784096599, -0.010441708378493786, -0.006622312590479851, 0.004363093990832567, 0.021180594339966774, 0.011488581076264381, 0.007652300409972668, 0.015966493636369705, 0.022558413445949554, -0.004744695965200663, -0.01722273975610733, -0.02766444906592369, 0.0032047806307673454, -0.048142626881599426, 0.009550178423523903, 0.005730782635509968, 0.006720245815813541, -0.002470281207934022, -0.014926375821232796, 0.00047193688806146383, -0.02666485495865345, 0.026219090446829796, -0.013014988973736763, -0.009685258381068707, 0.009077397175133228, 0.01433202251791954, -0.01607455685734749, 0.004336078185588121, -0.0017864372348412871, 0.011238682083785534, -0.027826545760035515, 0.013832224532961845, 0.04003780707716942, -0.01483181957155466, -0.007929214276373386, -0.6341210603713989, -0.018965275958180428, 0.014953391626477242, -0.00479197409003973, 0.020478175953030586, 0.00778062641620636, 0.02670537866652012, -0.00859110802412033, 0.004427257459610701, 0.0197757575660944, -0.00820612907409668, 0.00844251923263073, 0.010232334025204182, -0.01769552193582058, -0.014250974170863628, -0.007220043335109949, 0.011576383374631405, -0.033986207097768784, 0.005349180661141872, 0.019154388457536697, -0.018289875239133835, 0.01869511604309082, -0.01926245354115963, -0.017817093059420586, -0.007220043335109949, -0.013035250827670097, 0.01337970606982708, 0.004309061914682388, -0.02049168385565281, 0.010347152128815651, -0.013913272880017757, 0.021991075947880745, 0.0031237322837114334, 0.013521539978682995, 0.05011479929089546, 0.004609616007655859, -0.03201403468847275, 0.04279344528913498, 0.0022423332557082176, 0.01607455685734749, -0.02300417795777321, -0.013818716630339622, 0.001274820533581078, -0.007260567042976618, -0.0025141823571175337, -0.0006998848984949291, 0.01312305312603712, 0.010110761970281601, -0.026029977947473526, -0.030906377360224724, -0.0022794802207499743, 0.009023365564644337, -0.0029970945324748755, 0.00882074423134327, 0.020343095064163208, 0.01784410886466503, 0.020410636439919472, -0.019816283136606216, 0.008624877780675888, -0.007935968227684498, -0.007908952422440052, -0.0013862617779523134, -0.02045116014778614, -0.023166274651885033, -0.008300685323774815, 0.018668100237846375, -0.01949208974838257, -0.023882200941443443, -0.024327965453267097, -0.019910838454961777, 0.015237060375511646, 0.01722273975610733, -0.016628386452794075, -0.005794945638626814, 0.0041604735888540745, 0.027164652943611145, 0.02642171084880829, -0.00047404749784618616, -0.02215317264199257, 0.00608536833897233, -0.001891124527901411, -0.0078008887358009815, 0.0058928788639605045, -0.010988784022629261, 0.021855995059013367, -0.007382139563560486, -0.009570440277457237, -0.001745913177728653, -0.004244898911565542, -0.021518295630812645, 0.0025884765200316906, 0.010326890274882317, -0.0006669590948149562, -0.02766444906592369, -0.007523973938077688, 0.016952579841017723, -0.0031862070318311453, 0.008239898830652237, -0.0024804123677313328, -0.033283788710832596, -0.00677427789196372, -0.001549202366732061, 0.03571523725986481, 0.017992697656154633, 0.024787237867712975, 0.002016073791310191, 0.015952985733747482, 0.008239898830652237, 0.015128996223211288, -0.03725515305995941, -0.017438868060708046, -0.0051195439882576466, -0.014021337032318115, 0.028907189145684242, -0.0053356727585196495, -0.02453058585524559, 0.002311561955139041, -0.01160339917987585, 0.006521002389490604, -0.027313241735100746, 0.03468862548470497, -0.02798864245414734, -0.0035357275046408176, -0.0045758457854390144, -0.004653516691178083, -0.012278800830245018, 0.005430229008197784, -0.04184788092970848, -0.005808453541249037, 0.008260161615908146, -0.022612445056438446, -0.028069689869880676, 0.0025158708449453115, 0.005187084432691336, 0.013028496876358986, 0.026394695043563843, 0.026678362861275673, -0.023882200941443443, -0.011562875472009182, -0.025354575365781784, -0.01646628975868225, 0.001026610378175974, 0.019951362162828445, -0.0004398552991915494, -0.019951362162828445, -0.026340661570429802, -0.009617718867957592, -0.00980007741600275, 0.012798860669136047, -0.01926245354115963, -0.003687692806124687, -0.010921243578195572, 0.004977709613740444, 0.023976756259799004, 0.016479797661304474, 0.007442925591021776, -0.018533019348978996, -0.009854109026491642, 0.0064264461398124695, -0.01907334104180336, 0.001044339733198285, 0.03341887146234512, -0.0018134532729163766, -0.012650271877646446, 0.007665808312594891, -0.005686881486326456, 0.006662836764007807, 0.015237060375511646, -0.010049975477159023, -0.027529370039701462, 0.02001890353858471, -0.014656214974820614, 0.00011703443306032568, 0.010664591565728188, -0.00652437936514616, 0.024463046342134476, -0.020140474662184715, 0.0027674580924212933, 0.021329183131456375, -0.021153578534722328, -0.006956636440008879, -0.005720651708543301, 0.0006597829051315784, -0.01656084693968296, 0.03760635852813721, -0.012630010023713112, 0.06165065988898277, 0.025246512144804, -0.006726999767124653, 0.005052004009485245, -0.028880173340439796, 0.017911650240421295, 0.012082934379577637, 0.013899764977395535, -0.015237060375511646, 0.011164388619363308, -0.013913272880017757, 0.0022642838302999735, -0.008050786331295967, 0.006011074408888817, 0.021194102242588997, 0.025354575365781784, -0.01048898696899414, -0.022220712155103683, 0.002883964916691184, -0.0232067983597517, -0.004258406814187765, -0.007267321459949017, -0.010570035316050053, -0.013562064617872238, 0.005990812089294195, -0.03098742663860321, 0.009151691570878029, -0.003940968308597803, 0.001441982458345592, -0.0009455622639507055, -0.0005534071824513376, 0.013670128770172596, -0.003667430719360709, 0.019100356847047806, 0.01674995943903923, 0.0027742120437324047, 0.019681202247738838, -0.01148182712495327, -0.009867616929113865, 0.002571591641753912, 0.007078208960592747, 0.020856400951743126, -0.00473118806257844, -0.02675941213965416, -0.015385648235678673, 0.02575981616973877, 0.002345331944525242, 0.01722273975610733, 0.010083746165037155, 0.013156822882592678, 0.004221259616315365, -0.0008488954044878483, 0.026394695043563843, 0.006659459788352251, -0.007611776236444712, -0.0065480186603963375, 0.010644328780472279, -0.0007602489204145968, 0.02419288456439972, 0.0038531662430614233, 0.05678776651620865, -0.0058118305169045925, -0.01765499636530876, 0.022477364167571068, -0.008131834678351879, -0.009280017577111721, -0.03004186414182186, 0.02666485495865345, 0.01098203007131815, -0.024179376661777496, 0.016587862744927406, -0.008185867220163345, 0.021693898364901543, 0.034607578068971634, -0.005166822113096714, 0.02163986675441265, 0.007584759965538979, -0.0031828300561755896, -0.007253813091665506, 0.005930026061832905, -0.004444142337888479, 0.012218015268445015, 0.0005559399141930044, -0.009131429716944695, -0.0045623378828167915, 0.003667430719360709, 0.025557195767760277, -0.01603403314948082, 0.02575981616973877, 0.0049439393915236, 0.006767523940652609, -0.010684853419661522, 0.00650074053555727, 0.01897878386080265, -0.028150739148259163, -0.03728216886520386, -0.007138994988054037, 0.005761175416409969, -0.00877346657216549, -0.0012427389156073332, -0.009232739917933941, 0.005545047111809254, -0.017682014033198357, 0.01860055886209011, -0.004471158608794212, 0.012109951116144657, -0.014169925823807716, 0.018492495641112328, 0.007449679542332888, 0.0015804397407919168, 0.01152910478413105, -0.012332833372056484, 0.0019096980104222894, -0.02505739964544773, 0.0021714160684496164, 0.01656084693968296, -0.009671750478446484, -0.01646628975868225, 0.04122651368379593, -0.007618530187755823, -0.005484261084347963, -0.016115082427859306, -0.013291903771460056, -0.024233410134911537, -0.0065885428339242935, -0.01375793106853962, 0.002917734906077385, 0.012798860669136047, -0.008699172176420689, 0.0037383479066193104, 0.01769552193582058, 0.011724972166121006, 0.01978926733136177, 0.025921912863850594, -7.445247319992632e-05, -0.016993103548884392, -0.01414291001856327, 0.030393071472644806, 0.12978516519069672, 0.03274346888065338, -0.014777787029743195, 0.032905563712120056, -0.0056463573127985, 0.014818311668932438, -0.017763061448931694, -0.029690654948353767, 0.03571523725986481, -0.002845129230991006, -0.0034783182200044394, -0.00813858862966299, 0.01319059357047081, -0.022045107558369637, 0.015871936455368996, -0.0051330518908798695, 0.015264076180756092, -0.025300543755292892, -0.002544575370848179, -0.013291903771460056, -0.0006682254606857896, -0.010597051121294498, 0.0034006470814347267, 0.007449679542332888, 0.03182492032647133, -0.02538159303367138, 0.031716857105493546, 0.043198686093091965, -0.013784946873784065, -0.006142777390778065, 0.011542613618075848, 0.003711331868544221, -0.009442114271223545, 0.004173981957137585, -0.03023097664117813, -0.006389298941940069, -0.017803585156798363, 0.032338228076696396, 0.0008704237989149988, 0.0026526397559791803, 0.007935968227684498, 0.022166680544614792, 0.0008535388042218983, -0.01783060096204281, -0.0016564223915338516, -0.01483181957155466, 0.00011450167949078605, 0.027056587859988213, -0.018343906849622726, -0.011927592568099499, 0.013453999534249306, -0.02766444906592369, -0.016966087743639946, 0.01580439694225788, -0.008415503427386284, 0.010799671523272991, 0.005818584933876991, -0.017209231853485107, 0.010894227772951126, -0.011238682083785534, -0.010684853419661522, -0.01430500578135252, -0.006757393013685942, 0.006970144342631102, 0.027245700359344482, -0.023733612149953842, -0.004589353688061237, -0.023476960137486458, -0.010887473821640015, 0.002740442054346204, 0.030285008251667023, -0.024895302951335907, -0.016682418063282967, 0.007044438738375902, 0.025165462866425514, 0.016020525246858597, -0.003397270105779171, -0.0048021054826676846, -0.009752798825502396, 0.021653374657034874, -0.0010722000151872635, -0.01079291757196188, -0.01375793106853962, -0.015223552472889423, -0.007550990208983421, -0.011893821880221367, -0.025705784559249878, -0.012521945871412754, 0.02092394046485424, 0.021180594339966774, 0.024084821343421936, 0.004724434111267328, 0.023355387151241302, 0.012346341274678707, 0.01098203007131815, -0.007355123292654753, 0.0050182337872684, 0.0040828026831150055, 0.0004900882486253977, -0.02149127796292305, 0.015601777471601963, -0.007132241036742926, -0.011711463332176208, -0.008145342580974102, 0.011461565271019936, -0.0056092101149261, 0.003866674145683646, 0.0006213694578036666, -0.009597456082701683, -0.002752261469140649, 0.021288657560944557, -0.01148182712495327, 0.005187084432691336, -0.023125750944018364, 0.0013102791272103786, -0.014575166627764702, -0.004569091834127903, -0.009719029068946838, 0.006490609608590603, -0.007078208960592747, 0.005271509289741516, -0.041631754487752914, 0.018141286447644234, 0.0169390719383955, 0.011265698820352554, 0.02575981616973877, 0.03201403468847275, -0.013663374818861485, -0.032284196466207504, 0.015912460163235664, -0.026354171335697174, 0.0025074284058064222, 0.013683636672794819, -0.013717406429350376, -0.030014848336577415, -0.023855185136198997, -0.01048223301768303, 0.00543360598385334, -0.013399967923760414, -0.005440359935164452, -0.004288800060749054, 0.011880313977599144, 0.031284600496292114, 0.008739696815609932, 0.028258802369236946, -0.03231121227145195, 0.01950559765100479, 0.015034439973533154, 0.01300148107111454, 0.027056587859988213, -0.013339181430637836, 0.011225174181163311, -0.02001890353858471, -0.010624066926538944, -0.016142098233103752, -0.013535047881305218, 0.0019367141649127007, -0.01361609622836113, 0.05030390992760658, 0.039875708520412445, 0.033986207097768784, 0.0004989529261365533, 0.03098742663860321, -0.009840601123869419, 0.005153314210474491, -0.01418343372642994, 0.009165199473500252, -0.0018472233787178993, -0.015007424168288708, 0.016803991049528122, 0.006423069164156914, 0.0008940628613345325, 0.006848572287708521, 0.016331210732460022, -0.007807642687112093, 0.01316357683390379, -0.0021190724801272154, -0.00033157996949739754, -0.028393883258104324, -0.031068474054336548, -0.03282451629638672, 0.0071862731128931046, -0.015628792345523834, 0.010549772530794144, -0.010002697817981243, -0.0031372404191643, 0.013589080423116684, 0.024395504966378212, 0.006362283136695623, 0.005697012413293123, 0.03630958870053291, -0.0031726991292089224, -0.0018978784792125225, 0.013069020584225655, 0.003751856042072177, -0.039362404495477676, -0.006287988740950823, -0.03295959532260895, 0.003586382605135441, 0.022936638444662094, 0.009894633665680885, 0.0029059152584522963, 0.005085773766040802, -0.004906792659312487, 0.01697959564626217, 0.017614472657442093, -0.028204770758748055, -0.004305684939026833, -0.005379573907703161, -0.026799935847520828, -0.006105630658566952, -0.02377413585782051, -0.02124813385307789, -0.02615155093371868, -0.03379709646105766, 0.009577194228768349, -0.016479797661304474, 0.0057341596111655235, 0.0029633245430886745, -0.03690394386649132, 0.01418343372642994, 0.027745498344302177, 0.03490475192666054, 0.0037991339340806007, 0.020761845633387566, 0.028258802369236946, 0.010921243578195572, -0.019627170637249947, -0.019721725955605507, -0.0024398881942033768, 0.01941104233264923, 0.025165462866425514, 0.0035526123829185963, -0.0031423058826476336, -0.002186612691730261, 0.008813990280032158, 0.0009168576798401773, -0.03382411226630211, -0.040118854492902756, 0.017290281131863594, 0.00671349186450243, 0.007132241036742926, -0.012089688330888748, -0.014048353768885136, -0.0031743876170367002, 0.021572327241301537, -0.0008370758732780814, 0.009165199473500252, -0.00585910864174366, -0.0200729351490736, -0.002363905543461442, -0.0008501617703586817, -0.023233814164996147, -0.003555989358574152, 0.00238416763022542, -0.015723347663879395, -0.00010342086898162961, -0.0010088811395689845, 0.014467102475464344, -0.004710926208645105, -0.015331616625189781, -0.003301025368273258, 0.0030663232319056988, 0.018465479835867882, 0.003971361089497805, 0.01337970606982708, -0.015331616625189781, -0.023895708844065666, 0.015628792345523834, 0.031068474054336548, -0.04360392689704895, -0.008408749476075172, 0.007503712084144354, -0.018438464030623436, 0.025070907548069954, -0.05195189267396927, 4.107813583686948e-05, 0.00653788773342967, -0.01745237596333027, 0.0035289733204990625, 0.03306766226887703, 0.019573137164115906, -0.009617718867957592, 0.009090905077755451, 0.0017011677846312523, -0.006315005011856556, 0.019248945638537407, 0.00414021173492074, -0.015358632430434227, -0.00025813005049712956, -0.007746856659650803, -0.002792785642668605, 0.017290281131863594, 0.0026104270946234465, 0.005480884108692408, -0.021937044337391853, -0.017438868060708046, 0.013487770222127438, -0.023922724649310112, -0.0015356943476945162, -0.01269079651683569, 0.00441374909132719, -0.003562743542715907, 0.014602182433009148, -0.007848165929317474, -0.019573137164115906, 0.007659054361283779, -0.03433741629123688, -0.009982435032725334, -0.004937185440212488, -0.012677287682890892, 0.012447651475667953, -0.00523098511621356, 0.016479797661304474, -0.0011540924897417426, 0.012562469579279423, -0.03177088871598244, -0.016817498952150345, -0.01670943573117256, 0.014034844934940338, 0.011252190917730331, 0.0020565977320075035, 0.017438868060708046, -0.005443736910820007, 0.0077198403887450695, -0.029204364866018295, -0.004170604515820742, -0.013393213972449303, -0.0329325795173645, -0.022409824654459953, 0.001026610378175974, 0.0150614557787776, -0.00044703143066726625, -0.0063082510605454445, -0.02519248053431511, 0.020694304257631302, -0.03079831413924694, -0.00942185241729021, -0.004298930987715721, 0.0018742394167929888, 0.00022752591758035123, -0.009286771528422832, 0.018276367336511612, -0.008834253065288067, -0.002897472819313407, -0.013602588325738907, -0.0175604410469532, -0.03409427031874657, -0.03809265047311783, -0.01737132854759693, -0.01354180183261633, 0.04754827171564102, 0.004423880483955145, -0.015777381137013435, -0.0024652157444506884, -0.002490543294698, -0.02386869303882122, -0.03060920163989067, 0.020059427246451378, 0.01888422854244709, 0.01774955354630947, 0.0007036840543150902, 0.005507899913936853, 0.01399432122707367, 0.014534642919898033, 0.016115082427859306, 0.019924346357584, -0.011569629423320293, 0.023544499650597572, -0.007382139563560486, -0.0007450524135492742, -0.0017898142104968429, -0.015358632430434227, -0.025989454239606857, 0.016858022660017014, 0.016452781856060028, 0.00715250289067626, 0.030285008251667023, 0.006835064385086298, 0.0037754951044917107, -0.0025091168936342, 0.01399432122707367, -0.008854514919221401, 0.009894633665680885, 0.014034844934940338, -0.01622314564883709, -0.008678910322487354, 0.009043627418577671, 0.0037923799827694893, -0.023598531261086464, 0.012157228775322437, 0.019816283136606216, 0.014980407431721687, 0.0023368895053863525, 0.015763873234391212, -0.01502093207091093, 0.016520323231816292, -0.01143454946577549, 0.04092933610081673, 0.005376196466386318, 0.004309061914682388, 0.012515191920101643, 0.018141286447644234, -0.024787237867712975, -0.02594892866909504, 0.003471564268693328, -0.009023365564644337, -0.03274346888065338, 0.008192621171474457, -0.033905159682035446, -0.005541670136153698, -0.005990812089294195, 0.024463046342134476, -0.019275961443781853, 9.01239036465995e-05, -0.0138052087277174, 0.003724839771166444, -0.015453188680112362, 0.0152100445702672, -0.014372546225786209, 0.002162973629310727, -0.0069768987596035, -0.01136025507003069, 0.013636358082294464, -0.04090232029557228, -0.01342698372900486, 0.002455084817484021, -0.010164793580770493, -0.009732536971569061, -0.0030916507821530104, -0.018289875239133835, -0.046467628329992294, 0.012785352766513824, 0.007868428714573383, -0.02311224304139614, -0.004464404657483101, 0.2290962189435959, -0.017141692340373993, -0.010657836683094501, 0.018668100237846375, -0.00965148862451315, -0.01337970606982708, 0.02879912406206131, 0.0003336906083859503, -0.00782790407538414, -0.009327296167612076, -0.0011321419151499867, 0.02001890353858471, -0.014399562031030655, -0.004346209112554789, 0.021342691034078598, -0.02534106746315956, -0.03401322290301323, -0.016209637746214867, -0.000816391664557159, 0.019478581845760345, 0.0050790198147296906, -0.003944345284253359, -0.014737263321876526, -0.032473307102918625, 0.0276104174554348, 0.005092528183013201, -0.01779007725417614, 0.00520734628662467, 0.004694040864706039, 0.015763873234391212, -0.025611229240894318, -0.011272452771663666, 0.01102930773049593, 0.021464262157678604, 0.015277584083378315, -0.011157634668052197, -0.01850600354373455, 0.009212477132678032, 0.021612850949168205, 0.0071457489393651485, 0.014426578767597675, 0.012981219217181206, -0.00011808975250460207, 0.00794947613030672, 0.003314533270895481, -0.011448057368397713, -0.016574354842305183, 0.008807236328721046, 0.006257595960050821, -0.00480548245832324, -0.022571921348571777, -0.0010063482914119959, 0.04211804270744324, 0.0304200891405344, 0.0034057125449180603, 0.005889501888304949, -0.0008421413949690759, 0.025016875937581062, 0.010887473821640015, 0.02415236085653305, -0.0138052087277174, 0.012940694577991962, 0.0004461871867533773, 0.026165058836340904, -0.02917734906077385, -0.004123326390981674, -0.01565580815076828, 0.03757934272289276, 0.008253407664597034, -0.022950146347284317, -0.0019603529945015907, -0.015318108722567558, -0.02186950296163559, -0.018478987738490105, -0.014764279127120972, -0.018803179264068604, 0.018343906849622726, 0.014899359084665775, 0.020896924659609795, 0.005886124912649393, 0.007584759965538979, 0.007564498111605644, -0.016668910160660744, -0.023895708844065666, 0.002252464182674885, -0.020289063453674316, 0.031149521470069885, -0.022450348362326622, 0.0022541526705026627, -0.006446708459407091, 0.002951504895463586, -0.014534642919898033, -0.013062266632914543, -0.02581384964287281, -0.001234296360053122, 0.0029126694425940514, 0.011083340272307396, -4.463982259039767e-05, -0.012893416918814182, -0.0032942714169621468, -0.02400377206504345, 0.01764148846268654, 0.03676886111497879, -0.0006268571014516056, -0.016007017344236374, -0.0009396524983458221, 0.00998918991535902, 0.028907189145684242, 0.01518302783370018, 0.001432695658877492, -0.005058757960796356, -0.02020801603794098, 0.023517483845353127, 0.010347152128815651, 0.022166680544614792, 0.015534237027168274, -0.0271376371383667, -0.034796688705682755, 0.02039712853729725, -0.007848165929317474, -0.002196743618696928, 0.007476695813238621, -0.013332427479326725, 0.006811425089836121, -0.01046197023242712, -0.023855185136198997, -0.015858428552746773, -0.004096310585737228, 0.0028924073558300734, -0.025489656254649162, 0.009003102779388428, -0.010556526482105255, 0.005190461408346891, -0.004690663889050484, -0.00675063906237483, -0.01071862317621708, 0.04341481253504753, -0.01399432122707367, 0.010076991282403469, 0.013555309735238552, -0.009327296167612076, 0.01845197193324566, 0.030717264860868454, -0.003971361089497805, 0.021801963448524475, 0.0007028398104012012, 0.010819933377206326, 0.037498295307159424, -0.00019618305668700486, -0.019856806844472885, -0.030636217445135117, 0.008368225768208504, 5.735637023462914e-05, -0.02272051014006138, 0.0068283104337751865, 0.00539645878598094, -0.025975946336984634, 0.005237739533185959, 0.010131023824214935, 0.008651894517242908, -0.06602726131677628, 0.020140474662184715, 0.021369706839323044, 0.011130617931485176, -0.03633660450577736, -0.018560035154223442, -0.17214636504650116, 0.00980007741600275, 0.014737263321876526, -0.03287854790687561, 0.023220306262373924, 0.01117114257067442, -0.0037991339340806007, 0.009975681081414223, -0.007895444519817829, -0.007267321459949017, 0.01793866604566574, -0.012413881719112396, -0.021883010864257812, -0.0313926637172699, 0.009178707376122475, -0.005406589712947607, -0.02139672264456749, 0.03814668208360672, 0.030339039862155914, -0.01369039062410593, 0.011339993216097355, -0.03268943727016449, 0.013210855424404144, -0.002436511218547821, 0.016641894355416298, 0.00716601125895977, 0.0076387920416891575, 0.02438199706375599, 0.010509248822927475, -0.026529774069786072, -0.009253001771867275, -0.026975540444254875, 0.04371199011802673, 0.009198969230055809, 0.02030257135629654, -0.017736045643687248, 0.00606172950938344, -0.008935563266277313, -0.022261235862970352, 0.02107252925634384, 0.027461828663945198, 0.040362000465393066, 0.014048353768885136, 0.014899359084665775, -0.01760096475481987, 0.005605833139270544, 0.027880577370524406, -0.02338240295648575, 0.0167904831469059, -0.023760627955198288, 0.013102791272103786, -0.043766021728515625, 0.0007467409013770521, -0.0016370046650990844, 0.021342691034078598, 0.0008092155330814421, -0.003897067392244935, -0.0031220437958836555, 0.0034546791575849056, -0.002333512529730797, -0.004342832136899233, -0.011130617931485176, 0.002885653404518962, -0.03079831413924694, -0.015169519931077957, -0.025746308267116547, 0.004450896289199591, 0.01224503107368946, -0.020842893049120903, 0.012879908084869385, -0.016196129843592644, 0.013595834374427795, 0.004771712236106396, 0.008550584316253662, 0.010934751480817795, 0.0020650404039770365, -0.004268537741154432, -0.005058757960796356, -8.875199273461476e-05, 0.02030257135629654, 0.02505739964544773, -0.005642980337142944, -0.02842089906334877, -0.012332833372056484, -0.004379979334771633, 0.0033702540677040815, 0.008746450766921043, 0.00328076328150928, -0.027124129235744476, -0.020086443051695824, 0.023639054968953133, -0.023328371345996857, -3.9970054785953835e-05, -0.023260831832885742, -0.0019265831215307117, 0.0200729351490736, 0.015223552472889423, -0.011380516923964024, -0.011333238333463669, -0.028528964146971703, -0.005376196466386318, 0.010279612615704536, -0.0001424675137968734, 0.007652300409972668, 0.01931648515164852, 0.023287847638130188, -0.019667694345116615, 0.02477372996509075, 0.013386460021138191, -0.0376603938639164, -0.039119258522987366, -0.011711463332176208, 0.031068474054336548, 0.02049168385565281, -0.016574354842305183, 0.03160879388451576, -0.0026188697665929794, -0.007706332486122847, 0.025233004242181778, 0.0013423606287688017, 0.045197874307632446, -0.013676882721483707, -0.006098876241594553, 0.011319730430841446, -0.0271376371383667, -0.03574225306510925, -0.10892876982688904, -0.039848692715168, 0.009779814630746841, 0.009090905077755451, -0.025989454239606857, 0.024827763438224792, -0.02590840496122837, 0.023071719333529472, -0.015480204485356808, 0.021977568045258522, 0.0014571789652109146, -0.029528558254241943, -0.010374168865382671, 0.004062540363520384, 0.020815877243876457, -0.00927326362580061, -0.0036809388548135757, -0.007138994988054037, -0.019762249663472176, 0.01727677322924137, -0.013636358082294464, -0.013791700825095177, 0.007814396172761917, -0.0034783182200044394, 0.0005635381676256657, -0.0038430350832641125, -0.037552326917648315, 0.016574354842305183, 0.011927592568099499, 0.012177490629255772, 0.042955540120601654, -0.0014605559408664703, 0.023666072636842728, -0.03614749386906624, 0.0075307278893888, -0.019762249663472176, -0.012873154133558273, -0.010218826122581959, 0.016115082427859306, -0.03312169387936592, 0.00407942570745945, 0.010326890274882317, 0.00942185241729021, -0.02974468655884266, -0.026786427944898605, -0.016952579841017723, -0.004596107639372349, 0.026056993752717972, -0.017020119354128838, -0.0051330518908798695, -0.028582995757460594, -0.020329587161540985, -0.012211261317133904, -0.006949882488697767, 0.009563686326146126, -0.013487770222127438, 0.021815471351146698, 0.009955419227480888, -0.009746044874191284, -0.009253001771867275, -0.023422926664352417, -0.006639197934418917, -0.007510466035455465, 0.005477507133036852, 0.013244625180959702, -0.010664591565728188, -0.007821150124073029, -0.015115488320589066, 0.007024176884442568, -0.03436443209648132, -0.012211261317133904, 0.006443331483751535, -0.007044438738375902, 0.013622850179672241, -0.04943939670920372, -0.015507221221923828, 0.004457650240510702, 0.0007100159418769181, 0.024557601660490036, 0.004467781633138657, -0.031960003077983856, -0.018722131848335266, 0.029717670753598213, -0.01622314564883709, 0.013913272880017757, 0.0008168137865141034, -0.01892475225031376, 0.012373357079923153, 0.015169519931077957, -0.033526934683322906, -0.004795351065695286, 0.026300137862563133, -0.00796973891556263, -0.00972578302025795, 0.0016150540905073285, -0.015318108722567558, -0.006672967690974474, 0.003159190993756056, 0.01860055886209011, 0.0013246313901618123, -0.01845197193324566, -0.005737536586821079, -0.050168830901384354, 0.029474526643753052, -0.00834796391427517, -0.0028468177188187838, -0.0004694041272159666, -0.027488844469189644, 0.027448320761322975, -0.03952449932694435, -0.006970144342631102, 0.005710520315915346, -0.021720916032791138, 0.027259208261966705, 0.004194243811070919, -0.005312033463269472, -0.026637839153409004, -0.009090905077755451, 0.019289469346404076, -0.023612039163708687, 0.00934755802154541, 0.002919423393905163, 0.020559225231409073, 0.016263669356703758, 0.04314465448260307, 0.0007585604325868189, -0.008192621171474457, 0.02145075425505638, -0.036552734673023224, 0.015412664972245693, -0.002529378980398178, -0.026921508833765984, 0.01273807417601347, -0.0005884436541236937, -0.020572733134031296, -0.0014774409355595708, -0.009300279431045055, -0.01922192983329296, -0.005794945638626814, 0.01888422854244709, 0.015534237027168274, 0.017006611451506615, -0.022382808849215508, -0.03301363065838814, 0.001569464453496039, -0.02438199706375599, -0.030068879947066307, 0.0024213145952671766, -0.0024230030830949545, -0.011549367569386959, 0.011833036318421364, 0.013339181430637836, 0.012440897524356842, 0.01731729693710804, -0.04806157946586609, -0.016452781856060028, -0.00900985673069954, -0.01250168401747942, 0.018370922654867172, -0.015547744929790497, -0.00908415112644434, 0.021288657560944557, 0.009604210965335369, 0.017006611451506615, 0.021653374657034874, 0.002083613770082593, 0.007476695813238621, 0.021761439740657806, -0.010657836683094501, 0.004660271108150482, 0.014386054128408432, 0.00043774466030299664, 0.005950287915766239, -0.010455216281116009, 0.022382808849215508, -0.008293931372463703, 0.013210855424404144, -0.00908415112644434, -0.014926375821232796, 0.015277584083378315, -0.012792106717824936, 0.02476022206246853, -0.0010722000151872635, -0.0044407653622329235, -0.0034057125449180603, 0.006480478215962648, 0.030690249055624008, 0.008212883025407791, -0.012792106717824936, 0.0029734554700553417, 0.013453999534249306, 0.013008235022425652, -0.003924082964658737, 0.024422522634267807, -0.010900981724262238, -0.006558149587363005, 0.013845732435584068, -0.0009970616083592176, -0.016263669356703758, 0.019465073943138123, -0.0058287158608436584, 0.040362000465393066, 0.01330541167408228, -0.000742097501643002, -0.014980407431721687, -0.026799935847520828, -0.039848692715168, 0.011258944869041443, -0.005024987738579512, 0.0007551833987236023, 0.0063082510605454445, 0.018870720639824867, 0.018208825960755348, 0.01212345901876688, 0.04055111110210419, 0.007767118513584137, -0.05189785733819008, 0.024638650938868523, -0.01797918975353241, -0.02771848253905773, -0.024638650938868523, 0.026084009557962418, 0.04757528752088547, 0.010326890274882317, 0.015723347663879395, 0.005112790036946535, 0.03060920163989067, 0.025205988436937332, 0.015426172874867916, -0.021423738449811935, 0.01958664506673813, -0.015601777471601963, 0.01826285943388939, 0.004585976712405682, -0.010117515921592712, -0.002617181045934558, -0.027583401650190353, -0.009948665276169777, -0.0019299600971862674, 0.016925564035773277, -0.008854514919221401, 0.043333765119314194, 0.026799935847520828, 0.0030460611451417208, -0.007990000769495964, -0.010968522168695927, 0.0138052087277174, -0.004511682782322168, 0.03558015450835228, -0.026111025363206863, -0.005599079187959433, 0.01850600354373455, -0.0069026043638587, 0.009246247820556164, -0.016250161454081535, -0.00873294286429882, 0.014885851182043552, 0.01480480283498764, 0.015871936455368996, -0.0032892057206481695, 0.00012779864482581615, 0.0003818129771389067, 0.010894227772951126, 0.01735782064497471, 0.005599079187959433, -0.026772920042276382, 0.00024040075368247926, 0.01580439694225788, 0.0018860589480027556, -0.004619746934622526, -0.021653374657034874, 0.014926375821232796, -0.008307439275085926, -0.04346884787082672, -0.0030494381207972765, 0.03652571886777878, 0.012103196233510971, -0.01399432122707367, 0.005163445137441158, 0.005281640216708183, -0.008219636976718903, -0.004288800060749054, 0.021693898364901543, -0.005325541365891695, -0.00432932423427701, 0.014710246585309505, 0.0005120388232171535, -0.019465073943138123, -0.0232067983597517, 0.011002291925251484], '_distance': 0.3801322281360626}), Document(page_content='Community Notes now active on India! https://t.co/cLcpcTIlcT\\n— Elon Musk (@elonmusk) April 4, 2024', metadata={'vector': [0.0038508006837219, -0.022761764004826546, -0.001525186118669808, -0.015214866027235985, 0.006487505976110697, -0.010647716000676155, -0.044124457985162735, -0.014098302461206913, -0.011629754677414894, -0.002419782569631934, 0.01530903484672308, 0.0002923833962995559, 0.0038104429841041565, -0.01646595634520054, -0.002722465666010976, 1.421454089722829e-05, 0.016062378883361816, -0.030349018052220345, 0.030564257875084877, 0.01025086548179388, -0.006329438183456659, 0.0297032929956913, 0.007318202871829271, -0.0062386333011090755, -0.005693804007023573, 0.005327221471816301, 0.02078423462808132, -0.036510299891233444, 0.013963776640594006, -0.008138810284435749, -0.005986397620290518, -0.006611942313611507, 0.0063126226887106895, -0.023111529648303986, -0.00645387452095747, -0.016721555963158607, 0.003028511768206954, -0.014111755415797234, 0.021631747484207153, 0.008394409902393818, 0.0013687999453395605, 0.01467676367610693, 0.0012519306037575006, -0.016264168545603752, 0.0034085470251739025, 0.005529009737074375, 0.004916917532682419, -0.0038676164112985134, -0.004089584108442068, 0.023071173578500748, 0.013082632794976234, 0.028896139934659004, -0.026151813566684723, 0.0015697478083893657, -0.004987543914467096, -0.008085000328719616, -0.028384940698742867, 0.04210657253861427, 0.002455095760524273, 0.01412520743906498, 0.0077285063453018665, -0.00941680558025837, -0.03812460973858833, 0.02607109770178795, -0.025694426149129868, -0.008670187555253506, -0.012800129130482674, 0.008596197701990604, 0.028707802295684814, 0.029299715533852577, 0.030591163784265518, -0.0017067958833649755, -0.0005725754308514297, -0.02625943347811699, 0.009806930087506771, -0.01559153851121664, -0.02581549808382988, 0.0037028223741799593, 0.005596272647380829, -0.0010955444304272532, 0.008475124835968018, -0.023703444749116898, -0.0010711615905165672, 0.034895990043878555, 0.012376372702419758, 0.0026215713005512953, 0.014179018326103687, 0.00886524934321642, -0.026555391028523445, -0.003662464441731572, 0.005276774056255817, 0.022788668051362038, 0.0054785627871751785, 0.019788743928074837, -0.037236738950014114, 0.018147530034184456, -0.008589471690356731, 0.005498741753399372, 0.005327221471816301, -0.010849504731595516, 0.00864328257739544, 0.014501879923045635, -0.014313544146716595, -0.009215016849339008, -0.011797911487519741, 0.00828006211668253, 0.03077949956059456, 0.006729652639478445, 0.015712613239884377, 0.015995116904377937, 0.013667820021510124, 0.01344585232436657, -0.012880844064056873, -0.041756805032491684, 0.011663385666906834, -0.017932288348674774, -0.007398918271064758, -0.014461521990597248, 0.01105801947414875, -0.015039983205497265, 0.03446550667285919, -0.002221357077360153, -0.003985326737165451, 0.00932263769209385, -0.0005179243162274361, 0.013909966684877872, -0.0012763134436681867, -0.008804713375866413, -0.0028805334586650133, 0.0049539124593138695, -0.008347325026988983, 0.0014932362828403711, -0.02825041487812996, 0.01740763708949089, -0.01614309474825859, 0.02638050727546215, 0.005330584477633238, 0.026111455634236336, -0.03659101575613022, -0.021443411707878113, -0.02527739480137825, 0.026393959298729897, -0.0036221067421138287, -0.0028973491862416267, -0.029864724725484848, 0.030887121334671974, 0.009362994693219662, 0.018174434080719948, 0.017421090975403786, 0.010479559190571308, 0.008535661734640598, 0.002150731161236763, 0.004873196594417095, 0.00016500428318977356, 0.003958421293646097, -0.005192695651203394, 0.029757104814052582, 0.02736254595220089, 0.0208514966070652, -0.017851572483778, 0.0026232528034597635, 0.0017454720800742507, -0.019788743928074837, -0.0004401515470817685, 0.03642958402633667, 0.020797686651349068, 0.02300390973687172, -0.012894297018647194, 5.9485621022759005e-05, 0.00901995413005352, 0.011071472428739071, 0.031801898032426834, -0.023864874616265297, 0.01972148008644581, -0.015335939824581146, 0.012786676175892353, 0.018968136981129646, -0.0007764660404063761, -0.025855856016278267, -0.0022247203160077333, -0.014071397483348846, 0.028008269146084785, 0.0407613143324852, 0.018349317833781242, -0.012504171580076218, -0.028546372428536415, 0.04789118096232414, -0.012389824725687504, 0.017743952572345734, -0.011582670733332634, 0.02467202953994274, 0.014797836542129517, -0.005037990864366293, -0.010950399562716484, -0.6310873627662659, -0.0295418631285429, 0.01037866435945034, -0.0006036845152266324, -0.008333873003721237, -0.0051725166849792, 0.003709548618644476, 0.0031327693723142147, -0.022142944857478142, 0.017488352954387665, -0.01801300421357155, 0.002323932945728302, -0.007237487472593784, -0.007224034983664751, -0.009255374781787395, -0.01857801154255867, 0.03166737034916878, -0.017542162910103798, 0.016721555963158607, 0.0026518397498875856, 0.002830086275935173, -0.003378278808668256, -0.01614309474825859, -0.008885428309440613, -0.007937021553516388, 0.0002682108024600893, 0.013284421525895596, -0.0062958067283034325, -0.03567624092102051, 0.02811588905751705, -0.028008269146084785, -0.0023424304090440273, 0.016802271828055382, -0.0034842179156839848, 0.03303953632712364, -0.013714903965592384, -0.0019708028994500637, 0.02035375125706196, 0.003240389982238412, 0.04111108183860779, -0.011192545294761658, 0.006094017997384071, 0.01579332910478115, 0.0037633588071912527, -0.0019943448714911938, -0.010277770459651947, 0.00159749377053231, -0.0052935900166630745, -0.015228318981826305, -0.0353802852332592, 0.009396626614034176, 0.016923345625400543, -0.027053136378526688, 0.029084475710988045, -0.00819934718310833, -0.006706110667437315, 0.01602202281355858, 0.021214717999100685, 0.011589396744966507, 0.006258812267333269, -0.015712613239884377, -0.0026013925671577454, -0.02059589885175228, -0.0142193753272295, -0.02565406821668148, 0.01068134792149067, 0.002899030689150095, 0.0014671719400212169, 0.017071323469281197, 0.00843476690351963, -0.023999400436878204, 0.016479410231113434, -0.01822824403643608, -0.00650768494233489, 0.002865399233996868, 0.009800204075872898, 0.021026380360126495, -0.018725989386439323, 0.015335939824581146, 0.005209511145949364, -0.019452430307865143, -0.024093568325042725, -0.003420318244025111, -0.014340449124574661, -0.01105801947414875, 0.017636330798268318, -0.006746468134224415, -0.01670810393989086, 0.006763284094631672, 0.0024803192354738712, 0.01477093156427145, 0.0036658276803791523, 0.01740763708949089, -0.017649784684181213, 0.006046934053301811, 0.006023392081260681, 0.005239779595285654, 5.362639421946369e-05, 0.013385315425693989, -0.0012847213074564934, -0.010829325765371323, -0.02811588905751705, 0.0052128741517663, 0.0005326380487531424, 0.0322323814034462, -0.007264392450451851, -0.021699009463191032, 0.0104257483035326, 0.02031339518725872, -0.020555540919303894, -0.015618443489074707, -0.012369646690785885, -0.028492562472820282, -0.00774868531152606, -0.022694500163197517, -0.03642958402633667, -0.006877630949020386, 0.025062154978513718, 0.001163648092187941, -0.0004960638470947742, 0.01820133998990059, -0.007688148878514767, -0.004261104390025139, 0.004170299507677555, -0.010472833178937435, 0.018887421116232872, 0.014152112416923046, 0.000904685934074223, -0.020703518763184547, -0.006403427571058273, -0.007681422401219606, 0.0011258127633482218, 0.015187961049377918, 0.004086221102625132, 0.013075906783342361, 0.02919209562242031, 0.017770856618881226, -0.016183452680706978, 0.0005477722152136266, -0.005999850109219551, -0.006662389729171991, 0.004341819789260626, 0.017084775492548943, -0.014972720295190811, -0.020205773413181305, -0.030026156455278397, -0.017797762528061867, -0.0001861290365923196, -0.04127251356840134, -0.014744026586413383, 0.0025408559013158083, 0.011266535148024559, 0.004207293968647718, 0.025223584845662117, -0.0003640604263637215, 0.005182606168091297, -0.012255298905074596, -0.028196604922413826, -0.021779725328087807, -0.04310206323862076, -0.004839565139263868, 0.007358560338616371, 0.007930295541882515, -0.0044628931209445, -0.0013637552037835121, 0.016183452680706978, -0.012578161433339119, 0.026676462963223457, -0.0004960638470947742, -0.01810717210173607, -0.0021440049167722464, -0.02221020869910717, 0.010385391302406788, 0.01829550787806511, 0.0067094736732542515, -0.01731346920132637, -0.02265414223074913, -0.03753269463777542, -0.007190403528511524, 0.009921276941895485, -0.01199297420680523, -0.004113126080483198, -0.0035985647700726986, -0.02300390973687172, 0.04240252822637558, -0.004234199412167072, 0.036348868161439896, 0.022533070296049118, 0.0028569914866238832, 0.020461373031139374, -0.018026456236839294, 0.016452504321932793, -0.0017622878076508641, 0.029810914769768715, -0.00716349808499217, -0.008091726340353489, 0.005037990864366293, -0.016412146389484406, 0.016479410231113434, -0.023299867287278175, 0.011831543408334255, 0.008071547374129295, 0.042510148137807846, -0.027846837416291237, -0.012524350546300411, -0.020959118381142616, -0.0042241099290549755, -0.018685633316636086, 0.022761764004826546, 0.014582594856619835, 0.010217233560979366, -0.016089284792542458, -0.010445927269756794, 0.008454945869743824, -0.010015444830060005, 0.011871900409460068, -0.001185508561320603, -0.011730648577213287, -0.018120624125003815, 0.004990906920284033, 0.003534665098413825, -0.004567150492221117, -0.005344036966562271, -0.011394334025681019, 0.00019001767213921994, 0.010950399562716484, -0.00848185084760189, 0.036321964114904404, 0.011098377406597137, -0.040303926914930344, -0.021174360066652298, -0.0020834682509303093, 0.021443411707878113, 0.022694500163197517, 0.005989760626107454, -0.010567001067101955, 0.028896139934659004, -0.004842928610742092, 0.023420939221978188, -0.004217383451759815, 0.01467676367610693, 0.002349156653508544, 0.012806855142116547, -0.005841782316565514, -0.0022633965127170086, -0.010324854403734207, 0.012060237117111683, 0.027510523796081543, -0.006087291985750198, 0.002337385667487979, -0.02354201301932335, -0.013950323686003685, -0.013714903965592384, -0.0027409628964960575, 0.014999625273048878, -0.002749370876699686, -0.011616301722824574, -0.017326921224594116, 0.01715203933417797, 0.018524201586842537, 0.013344958424568176, 0.014273186214268208, 0.022264018654823303, 0.017542162910103798, -0.017461447045207024, 0.003428725991398096, 0.0026636107359081507, -0.002781320596113801, 0.02293664775788784, -0.028573276475071907, 0.003793627256527543, -0.02546573244035244, 0.007372013293206692, -0.030322112143039703, 0.00579806137830019, -0.006463964004069567, 0.013661094009876251, 0.024941081181168556, 0.006716200150549412, -0.001020714407786727, -0.0031596743501722813, -0.031263794749975204, 0.016291074454784393, 0.005989760626107454, 0.0005423070979304612, 0.006268901750445366, -0.04315587505698204, 0.005340673960745335, -0.018968136981129646, 0.038904860615730286, -0.008528935723006725, 0.02476619742810726, -0.03005306050181389, -0.00873745046555996, 0.024376071989536285, -0.03683316335082054, 0.020273037254810333, -0.015564633533358574, 0.015228318981826305, 0.007661243434995413, 0.01782466657459736, 0.009948181919753551, 0.018497295677661896, -0.02103983424603939, 0.008158989250659943, 0.007708327379077673, 0.0005376827903091908, -0.005441568326205015, -0.017178943380713463, -0.02726837620139122, 0.02103983424603939, 0.002845220500603318, -0.03193642199039459, -0.017394185066223145, 0.018847063183784485, -0.004190478473901749, 0.02666301093995571, 0.0031748085748404264, 0.004775665700435638, -0.0173807330429554, 0.01756906881928444, -0.024376071989536285, -0.01412520743906498, -0.002550945384427905, 0.09239231050014496, 0.003450586460530758, 0.004600781947374344, -0.0018631821731105447, -0.006702747195959091, -0.010102886706590652, -0.01743454299867153, -0.016223810613155365, -0.0012611793354153633, -0.017205849289894104, -0.007822674699127674, -0.0053171319887042046, -0.0008231296669691801, -0.006258812267333269, 0.015443560667335987, -0.003699459135532379, 0.008111905306577682, -0.01072843186557293, -0.007197129540145397, -0.02555990032851696, 0.018591463565826416, 0.006241996772587299, 0.031263794749975204, 0.013883061707019806, 0.037236738950014114, -0.024873817339539528, 0.032528337091207504, 0.020999476313591003, 0.009477341547608376, -0.02862708829343319, 0.01077551580965519, 0.034895990043878555, 0.004029047675430775, 6.121974729467183e-05, 0.008824892342090607, 0.008629829622805119, 0.014609500765800476, 0.03207094967365265, -0.004980817437171936, -0.026676462963223457, 0.013748535886406898, 0.014824741519987583, -0.014205923303961754, 0.0061579179018735886, -0.0034337707329541445, -0.004947185982018709, -0.008448219858109951, 0.021618293598294258, -0.007412370759993792, -0.005448294337838888, 0.03441169857978821, 0.009692583233118057, -0.0401155911386013, -0.002115418203175068, 0.006346254143863916, 0.030564257875084877, -0.011394334025681019, -0.025761688128113747, -0.013654367066919804, -0.048348568379879, -0.03659101575613022, -0.01728656515479088, -0.01965421810746193, -0.0028384942561388016, -0.023246055468916893, -0.028842328116297722, -0.011663385666906834, -0.02612490765750408, -0.007392191793769598, -0.0029797463212162256, 0.015900949016213417, -0.0186452753841877, -0.006568221375346184, 0.014340449124574661, 0.036698635667562485, 0.01977529190480709, 0.021752819418907166, -0.0049841804429888725, -0.012073689140379429, 0.023595822975039482, 0.0007012157002463937, -0.007883211597800255, -8.686372166266665e-05, -0.03352382779121399, 0.0036927328910678625, 0.01586059108376503, -0.0028687624726444483, 0.002855309983715415, -0.017797762528061867, 0.01573951728641987, 0.0078024957329034805, -0.005061532836407423, 0.014394259080290794, 0.011132009327411652, -0.0029612488579005003, 0.013977229595184326, 0.0031294061336666346, 0.004789118189364672, -0.001795919262804091, 0.0009593369904905558, 0.02148376777768135, -0.03338930010795593, -0.01025086548179388, 0.006379885599017143, -0.0037499063182622194, 0.015013078227639198, -0.006595126818865538, 0.027510523796081543, -0.02249271236360073, -0.001656348817050457, 0.012208214960992336, -0.009127574972808361, 0.002828404773026705, -0.004072768613696098, -0.018147530034184456, 0.034707654267549515, 0.011865174397826195, -0.022169850766658783, -0.002159138908609748, -0.030914025381207466, 0.008017737418413162, -0.022452354431152344, 0.012046784162521362, -0.00516579020768404, -0.001678209169767797, 0.013291147537529469, -0.015039983205497265, -0.002692197449505329, -0.016829175874590874, 0.021699009463191032, -0.020367205142974854, -0.008710545487701893, 0.003450586460530758, -0.04041154682636261, -0.013869608752429485, 0.0007323247846215963, -0.003534665098413825, 0.0067901890724897385, -0.014730573631823063, -0.010486285202205181, -0.019102662801742554, 0.004789118189364672, -0.00706933019682765, -0.016600482165813446, -0.002369335386902094, -0.03139831870794296, 0.0004016855964437127, -0.0019455791916698217, 0.009336089715361595, 0.03142522647976875, 0.005175879690796137, 0.0037263643462210894, -0.0021894073579460382, -0.007378739304840565, -0.024981439113616943, -0.011266535148024559, 0.00838768295943737, -0.033792879432439804, 0.025331206619739532, 0.006131012924015522, 0.047057121992111206, -0.011192545294761658, 0.028438750654459, 0.008569292724132538, 0.024349167943000793, -0.003955058287829161, 0.02935352735221386, -0.0012771541951224208, -0.0044595301151275635, -0.0038104429841041565, 0.002186044119298458, -0.01025086548179388, 0.007883211597800255, -0.007156772073358297, -0.005105253774672747, 0.00030226263334043324, -0.0033496920950710773, 0.010721705853939056, -0.021255074068903923, -0.045039232820272446, -0.05233053117990494, -0.00040357737452723086, -0.007842853665351868, -0.016008568927645683, -0.02752397581934929, -0.007372013293206692, 0.01670810393989086, 0.02708004042506218, 0.014555689878761768, 0.02028648927807808, 0.009780025109648705, -0.007392191793769598, 0.045012328773736954, 0.006914625409990549, -0.0027930918149650097, -0.03301262855529785, -0.002596347825601697, -0.033281680196523666, -0.004177025984972715, 0.012901023030281067, 0.01649286225438118, 0.028546372428536415, -0.010876409709453583, 0.01747490093111992, -0.011844995431602001, 0.029434241354465485, -0.027685407549142838, 0.004166936501860619, -0.008219526149332523, -0.042886823415756226, 0.02635360136628151, -0.03844746947288513, -0.004809297155588865, -0.030214492231607437, -0.004980817437171936, 0.006595126818865538, 0.0078092217445373535, 0.01579332910478115, -0.019613860175013542, -0.006463964004069567, 0.020542088896036148, 0.0001516568154329434, 0.026528485119342804, 0.012611792422831059, 0.0011073154164478183, 0.007136593107134104, 0.026151813566684723, -0.009874192997813225, 0.013909966684877872, -0.010856231674551964, -0.001198961166664958, 0.036698635667562485, 0.02625943347811699, -0.012625245377421379, -0.014259733259677887, 0.009295731782913208, 0.013950323686003685, -0.0024281905498355627, -0.008959418162703514, 0.015187961049377918, -0.006346254143863916, 0.011105104349553585, -0.03357763960957527, -0.03293191269040108, -0.020770782604813576, 0.0026989236939698458, 0.006840636488050222, -0.029030663892626762, 0.016667746007442474, 0.0018480479484423995, -0.029488053172826767, 0.0058922297321259975, -0.001304059405811131, -0.0037969902623444796, 0.0029393883887678385, 0.0011199272703379393, -0.011535586789250374, 8.502450509695336e-05, -0.005885503254830837, -0.023488203063607216, -0.0037633588071912527, 0.030860215425491333, -0.024402977898716927, -0.02091876044869423, 0.026488127186894417, 0.006447148509323597, -0.007910116575658321, 0.001302377786487341, -0.006258812267333269, 0.018268601968884468, -0.012712687253952026, -0.017999550327658653, 0.006326075177639723, 0.010035623796284199, 0.006117560435086489, -0.010419022291898727, -0.015564633533358574, -0.02066316083073616, -0.012874118052423, -0.018685633316636086, 0.015564633533358574, 0.03672553971409798, -0.018268601968884468, -0.02638050727546215, 0.006571584846824408, 0.008905607275664806, -0.005085074808448553, -0.015941306948661804, -0.0013326461194083095, -0.019438976421952248, -0.003729727352038026, -0.022788668051362038, -0.03371216356754303, 0.0011182456510141492, 0.028304224833846092, 0.015201414003968239, 0.009167932905256748, 0.011892079375684261, -0.005572730675339699, 0.013190253637731075, 0.01773049868643284, 0.04743379354476929, -0.005007722415030003, 0.027308734133839607, 0.003706185379996896, -0.015779875218868256, -0.009154479950666428, -0.012524350546300411, -0.04670735448598862, -0.01838967576622963, 0.01700405962765217, 0.00810517929494381, -0.0011216087732464075, 0.012201488949358463, 0.023609276860952377, 0.053379833698272705, -0.007351834326982498, -0.008475124835968018, -0.017178943380713463, 0.02932662144303322, -0.028331130743026733, 0.013331505469977856, 0.03532647341489792, 0.01505343522876501, 0.015968210995197296, -0.027604691684246063, 0.021147454157471657, 0.005017811898142099, -0.01579332910478115, -0.016546672210097313, 0.00955805741250515, -0.005286863539367914, 0.0015016441466286778, 0.0009534514974802732, -0.04713783785700798, -0.03368525952100754, -0.03497670590877533, 0.013869608752429485, 0.010634263977408409, 0.003203395288437605, 0.003348010592162609, 0.042537055909633636, 0.035595525056123734, 0.014259733259677887, -0.005428115837275982, -0.02508905902504921, -0.007580528035759926, -0.030349018052220345, -0.030698783695697784, -0.007997558452188969, 0.00434518326073885, 0.03694078326225281, 0.024133926257491112, -0.020111605525016785, -0.00012821989366784692, -0.005539099220186472, -0.027026230469346046, -0.018995041027665138, -0.02461821958422661, 0.019896363839507103, 0.011138735339045525, 0.010856231674551964, 0.014649857766926289, 0.00952442642301321, -0.00711641414090991, 0.01646595634520054, 0.003073914209380746, 0.01895468309521675, -0.003941605798900127, -0.021846989169716835, 0.002406330080702901, 0.015349391847848892, -0.025142868980765343, 0.03142522647976875, 0.052276719361543655, 0.03680625557899475, -0.022438902407884598, 0.016089284792542458, -0.008885428309440613, 0.007472907658666372, -0.003921426832675934, -0.003638922469690442, -0.03099474124610424, 0.01086968369781971, 0.021497221663594246, -0.030752595514059067, -0.007486360147595406, -0.0017807851545512676, 0.010163423605263233, 0.0103450333699584, 0.0016000161413103342, -5.16557993250899e-05, 0.0033513735979795456, 0.013069179840385914, 0.005673625040799379, -0.01921028271317482, -0.002808225806802511, -0.006020029075443745, 0.02511596493422985, -0.004479709081351757, -0.009914550930261612, 0.029999250546097755, 0.014744026586413383, -0.011838269419968128, -0.010028897784650326, 0.020447921007871628, 0.0022398545406758785, -0.010762062855064869, 0.01914302073419094, -0.01646595634520054, 0.0295418631285429, 0.01656012423336506, -0.013842703774571419, -0.015268676914274693, -0.015564633533358574, -0.012114047072827816, -0.017259659245610237, -0.026313243433833122, -0.0009896053234115243, 0.008804713375866413, -0.03769412636756897, 0.02625943347811699, -0.025923119857907295, 0.009329363703727722, -0.012073689140379429, -0.008266610093414783, 0.013990681618452072, -0.010640989989042282, -0.009847288019955158, 0.018685633316636086, -0.0027796390932053328, -0.01017687562853098, 0.018537653610110283, -0.0008626466151326895, -0.013432400301098824, 0.01646595634520054, 0.21814700961112976, -0.01923718862235546, -0.0013351684901863337, 0.03266286104917526, -0.009100669994950294, -0.01151540782302618, 0.0037028223741799593, -0.0017454720800742507, -0.010472833178937435, -0.006077202502638102, -0.03301262855529785, -0.004284646362066269, -0.014730573631823063, -0.005384394899010658, -0.0024012853391468525, 0.0004132463946007192, -0.02237163856625557, -0.0246451236307621, -0.02408011630177498, -0.0042241099290549755, 0.0012250255094841123, -0.015685707330703735, -0.010123065672814846, 0.00510189076885581, -0.005670262034982443, -0.00519605865702033, 0.0012048466596752405, 0.012692508287727833, 0.009141027927398682, 0.03355073183774948, -0.0432903990149498, 0.023394035175442696, -0.021147454157471657, -0.011945890262722969, -0.02344784513115883, -0.016896439716219902, 0.034169550985097885, 0.010479559190571308, 0.018174434080719948, 0.013096085749566555, -0.0033379211090505123, 0.002628297545015812, 0.007035698741674423, -0.02328641340136528, 0.0032353452406823635, -0.021308885887265205, -0.010089434683322906, -0.02511596493422985, -0.012759771198034286, 0.013560199178755283, -0.024053210392594337, 0.0027191024273633957, 0.01505343522876501, 0.03513813763856888, 0.02005779556930065, -0.01232256181538105, -0.0021910888608545065, 0.01724620722234249, -0.008898881264030933, 0.016250716522336006, 0.000962700170930475, 0.028196604922413826, -0.004288009833544493, 0.004452803637832403, -0.036510299891233444, -0.001868226914666593, 0.01339876838028431, 0.01530903484672308, 0.01078896876424551, -0.0034875809215009212, 0.019156472757458687, -0.02771231159567833, 0.018658727407455444, -0.0035716595593839884, -0.014717120677232742, -0.01646595634520054, 0.016035474836826324, 0.006114196963608265, 0.029864724725484848, 0.04041154682636261, 0.021241622045636177, 0.01485164649784565, 0.01017687562853098, -0.020649708807468414, 0.0037196381017565727, -0.023582370951771736, 0.029649483039975166, -0.024376071989536285, -0.02005779556930065, -0.0013839340535923839, -0.004435988143086433, -0.02752397581934929, -0.002221357077360153, -0.029568767175078392, 0.009874192997813225, 0.011858448386192322, 0.012450361624360085, 0.010607358999550343, -0.006087291985750198, -0.014488426968455315, -0.02277521602809429, 0.009800204075872898, 0.016196904703974724, -0.006154554896056652, -0.03677935153245926, 0.009766572155058384, -0.0013536657206714153, 0.015578086487948895, -0.014945815317332745, 0.0037465430796146393, -0.0026518397498875856, -0.0028620362281799316, 0.014259733259677887, -0.0036792801693081856, 0.0014276549918577075, 0.012342740781605244, -0.010365212336182594, -0.015995116904377937, 0.012611792422831059, -0.015026530250906944, -0.0009332726476714015, -0.03312024846673012, -0.028842328116297722, -0.01734037511050701, -0.021066738292574883, -0.002725828904658556, -0.01204005815088749, -0.005135522224009037, -0.002209586091339588, -0.019290998578071594, 0.023649632930755615, -0.0050413538701832294, -0.003438815474510193, -0.014999625273048878, 0.005135522224009037, -0.0077419588342309, 0.010856231674551964, -0.04856380820274353, 0.004018958192318678, 0.014999625273048878, -0.006857451982796192, 0.002781320596113801, -0.007224034983664751, -0.014434617012739182, 0.010493011213839054, -0.01857801154255867, 0.01423282828181982, -7.094133616192266e-05, -0.02157793752849102, -0.01576642319560051, -0.011663385666906834, -0.008979596197605133, 0.00289062294177711, -0.013405494391918182, 0.039416056126356125, 0.0020952392369508743, -0.004146757535636425, -0.03535337746143341, 0.007002067286521196, -0.006248722784221172, -0.012235120870172977, -0.02483346126973629, 0.02202187106013298, -0.0042241099290549755, -0.01475747860968113, 0.020986022427678108, -0.17111679911613464, 0.0203806571662426, 0.003944968804717064, -0.03675244748592377, 0.027604691684246063, 0.010533369146287441, 0.007264392450451851, -0.015174509026110172, 3.436713450355455e-05, -0.008004284463822842, 0.030026156455278397, -0.0026753817219287157, -0.029111379757523537, 0.0039651477709412575, 0.0005822444218210876, 0.03486908599734306, -0.025802046060562134, 0.01475747860968113, 0.03564933314919472, 0.009147753939032555, 0.019129566848278046, -0.03971201181411743, 0.006857451982796192, -0.022142944857478142, -0.007600707001984119, -0.0028435387648642063, -0.01588749699294567, 0.00848185084760189, -0.0063765221275389194, -0.0059561291709542274, -0.031452130526304245, -0.0063193487003445625, 0.04280610755085945, -0.01336513739079237, 0.011232903227210045, 0.014986172318458557, 0.009194837883114815, -0.008125358261168003, -0.021510673686861992, 0.02277521602809429, 0.003803716506808996, 0.02050173096358776, 0.0061343759298324585, 0.020905308425426483, -0.0030722327064722776, 0.0035279388539493084, 0.017461447045207024, -0.019788743928074837, -0.0027275104075670242, -0.007170224562287331, 0.02012505754828453, -0.006753194611519575, 0.011972795240581036, 0.0024029668420553207, -0.003817169228568673, 0.022707954049110413, 0.0035649333149194717, 0.008919060230255127, 0.002771231345832348, -0.006988614797592163, -0.013788892887532711, 0.0004742034070659429, -0.018174434080719948, -0.029488053172826767, -0.018282055854797363, -0.020461373031139374, -0.0038306217174977064, 0.0017084775026887655, -0.03548790514469147, 0.019882911816239357, 0.007560349069535732, 0.007519991602748632, 0.013311326503753662, -0.020743876695632935, 0.0071231406182050705, -0.014192470349371433, -0.04624996706843376, 0.010129791684448719, 0.011791185475885868, 0.0004510817816480994, -0.020649708807468414, 0.049586206674575806, -0.004079494625329971, 0.03535337746143341, -0.004234199412167072, -0.005602999124675989, -0.017851572483778, -0.0041501205414533615, -0.01404449250549078, -0.004779028706252575, 0.0064673274755477905, -0.01709822751581669, 0.02989163063466549, -0.010607358999550343, 0.007620885968208313, 0.01977529190480709, 0.003161356085911393, 0.032528337091207504, -0.01857801154255867, -0.015927854925394058, -0.01984255388379097, 0.0022011783439666033, -0.008528935723006725, -0.003334557870402932, 0.02467202953994274, 0.01276649720966816, -0.03274357691407204, 0.008051368407905102, 0.017165491357445717, 0.004990906920284033, -0.015093793161213398, 0.006322712171822786, 0.026905156672000885, 0.009060312062501907, -0.01131361909210682, 0.010526643134653568, -0.009120848961174488, -0.025694426149129868, 0.00321516627445817, 0.02394559048116207, 0.04988216236233711, -0.0038945216219872236, 0.0025761688593775034, -0.007863032631576061, -0.003931516315788031, -0.014461521990597248, -0.10035623610019684, -0.0309678353369236, 0.017811214551329613, 0.02792755328118801, 0.005108616780489683, 0.026151813566684723, -0.00951097346842289, 0.009289005771279335, -0.025519542396068573, 0.03683316335082054, 0.009847288019955158, -0.023515107110142708, 0.004029047675430775, 0.019196830689907074, 0.02426845207810402, -0.022963551804423332, -0.006272264756262302, -0.005354126449674368, -0.007815948687493801, 0.029084475710988045, 0.013842703774571419, -0.016896439716219902, -0.008468398824334145, -0.015295581892132759, -0.0012418412370607257, -0.005576094146817923, -0.03268976882100105, 0.02619217149913311, 0.01892777904868126, -0.018147530034184456, -0.021793177351355553, -0.02328641340136528, -0.007392191793769598, -0.016950249671936035, -0.024524051696062088, 0.005448294337838888, -0.018026456236839294, -0.001526867737993598, 0.0031764900777488947, -0.034546222537755966, 0.0020347025711089373, -0.01797264628112316, 0.0006352139753289521, -0.019412072375416756, -0.001151036354713142, -0.0035750227980315685, 0.025573352351784706, 0.017165491357445717, 0.011279987171292305, -0.0191161148250103, -0.007304750382900238, -0.0026518397498875856, -0.023461297154426575, -0.003618743736296892, 0.015995116904377937, 0.003817169228568673, 0.03484218195080757, 0.010271044448018074, -0.017353827133774757, -0.007540170103311539, -0.0008416269556619227, -0.017717046663165092, -0.01467676367610693, 0.03532647341489792, 0.029837818816304207, 0.013896513730287552, -0.008723997510969639, -0.013909966684877872, 0.016344884410500526, 0.013196979649364948, -0.03546099737286568, 0.023797612637281418, -0.008407861925661564, 0.0042241099290549755, -0.020972570404410362, 0.001386456424370408, 0.0064370590262115, -0.02141650579869747, 0.014273186214268208, 0.016156548634171486, -0.01986945979297161, -0.01803990826010704, 0.016909891739487648, 0.010910041630268097, 0.01639869436621666, 0.011273261159658432, -0.003368189325556159, 0.018524201586842537, 0.007089509163051844, -0.03320096433162689, 0.0023289776872843504, 0.015120698139071465, -0.011623027734458447, -0.011784459464251995, 0.010540096089243889, 0.03621434420347214, -0.02689170464873314, -0.004715128801763058, -0.0007651154301129282, 0.01946588233113289, -0.033254776149988174, -0.018887421116232872, -0.0818454921245575, 0.02825041487812996, 0.02331331931054592, 0.004631050396710634, 0.019546598196029663, -0.01210059504956007, -0.0010543458629399538, -0.003041964489966631, -0.016196904703974724, 0.041084177792072296, -0.010593906044960022, 0.0018379585817456245, 0.019008494913578033, -0.013526568189263344, -0.009874192997813225, -0.01222839392721653, 0.00317144556902349, -0.018093718215823174, 0.008993049152195454, -0.01923718862235546, 0.010519917123019695, -0.018268601968884468, 0.025506088510155678, 0.017865024507045746, -0.01339876838028431, 0.02581549808382988, 0.01876634731888771, 0.01750180497765541, -0.009208290837705135, -0.023501655086874962, 0.017891930416226387, -0.01078896876424551, -0.015241771936416626, 0.03320096433162689, -0.00020084279822185636, -0.01914302073419094, 0.01029794942587614, 0.032905008643865585, 0.013977229595184326, 0.003043645992875099, -0.019156472757458687, -0.04084203019738197, 0.011670112609863281, -0.0026989236939698458, -0.01404449250549078, -0.012867392040789127, -0.006003213115036488, -0.012820307165384293, 0.023515107110142708, 0.006104107480496168, -0.00037499063182622194, 0.005777882412075996, -0.033631447702646255, -0.01423282828181982, 0.011710469610989094, -0.02806207910180092, 0.03403502702713013, 0.031209982931613922, 0.02300390973687172, -0.009194837883114815, 0.0347614660859108, 0.009847288019955158, 0.04256395995616913, 0.005407936871051788, 0.013196979649364948, 0.014824741519987583, -0.006426969543099403, -0.022977005690336227, 0.019183378666639328, -0.027375997975468636, -0.0023861511144787073, -0.01715203933417797, -0.001526867737993598, 0.013069179840385914, -0.0011930755572393537, -0.01927754655480385, 0.000176144705619663, 0.009833835065364838, -0.04143394157290459, 0.016089284792542458, -0.0008777807815931737, -0.011488502845168114, -0.03672553971409798, 0.013802345842123032, 0.024497145786881447, 0.011898806318640709, -0.011979521252214909, -0.00952442642301321, 0.0024265090469270945, -0.004261104390025139, -0.009289005771279335, -0.006598489824682474, 0.002498816465958953, 0.02138959988951683, -0.007896664552390575, 0.010654442943632603, 0.0029057569336146116, -0.015039983205497265, 0.00961859431117773, 0.021026380360126495, 0.0164256002753973, 0.009080491028726101, -0.000751662824768573, -0.010587180033326149, -0.015941306948661804, -0.0008206072961911559, -0.01904885284602642, -0.010149970650672913, -0.011892079375684261, 0.017636330798268318, 0.027093494310975075, -0.004705039784312248, -0.019196830689907074, 0.010149970650672913, -0.010741883888840675, 0.01093022059649229, 0.011172367259860039, 0.0010526643600314856, -0.01404449250549078, 0.0401155911386013, -0.007863032631576061, 0.00034934666473418474, 0.027375997975468636, -0.009988539852201939, 0.028008269146084785, -0.01665429398417473, 0.007385465782135725, 0.0005629063816741109, 0.008448219858109951, -0.0030150592792779207, -0.0007663766155019403, -0.0029797463212162256, -0.019317904487252235, -0.0005923338467255235, -0.026151813566684723, 0.003110908903181553, -0.02511596493422985, -0.000880303094163537, -0.004910191521048546, 0.07716399431228638, 0.02729528211057186, -0.0372905507683754, 0.014515331946313381, 0.02426845207810402, 0.018685633316636086, -0.016667746007442474, 0.005492015276104212, -0.023326771333813667, -0.012611792422831059, -0.02059589885175228, -0.006356343626976013, 0.025775140151381493, -0.012140952050685883, -0.02028648927807808, 0.01787847839295864, 0.018618369475007057, 0.023972496390342712, -0.005885503254830837, -0.012961559928953648, 0.0360260084271431, 0.01290774904191494, 0.023151887580752373, 0.016788819804787636, -0.013244063593447208, -0.027658501639962196, 0.022237112745642662, -0.0028569914866238832, -0.003998779226094484, -0.023461297154426575, 0.024537503719329834, 0.00835405196994543, -0.03914700448513031, 0.004990906920284033, -0.011522133834660053, -0.0035481175873428583, 0.019129566848278046, -0.03355073183774948, 0.007533444091677666, -0.00769487489014864, 0.007540170103311539, 0.020515182986855507, -0.016882987692952156, -0.0076477909460663795, 0.018847063183784485, -0.0008643281762488186, 0.006722926162183285, 0.020246131345629692, -0.030322112143039703], '_distance': 0.40060749650001526}), Document(page_content='NASA declined to specify the dollar value of the awards, though Intuitive Machines said in a statement that it was awarded a $30 million contract. The total potential value of all the task orders over the next 13 years is $4.6 billion.\\nThe three teams are also keeping specifications, like range or battery technology, close to the chest, though NASA specified that the rover would have to have an incredible 10-year life span and be capable of carrying two suited astronauts.\\nIntuitive Machines is leading a team that includes AVL, Boeing, Michelin, and Northrop Grumman; Lunar Outpost is leading the “Lunar Dawn” team that includes Lockheed Martin, General Motors, Goodyear and MDA Space. Astrolab is joined by Axiom Space and Odyssey Space Research.\\nNASA lunar terrain vehicle. Image Credits: Intuitive Machines', metadata={'vector': [0.01312164030969143, -0.011918134987354279, -0.0020253267139196396, 0.00259957043454051, -0.02970937453210354, 0.01437328476458788, -0.040300220251083374, -0.00483465101569891, -0.015088510699570179, 0.0010479087941348553, 0.022364558652043343, 0.011869994923472404, -0.01660148985683918, -0.016326403245329857, -0.004208828322589397, 0.0046386513859033585, 0.014125706627964973, 0.00432917894795537, 0.006670854985713959, 0.004133179318159819, -0.008878426626324654, 0.00025552985607646406, -0.01181497797369957, 0.0002974376257043332, 0.0004822615592274815, 0.007083484902977943, 0.023712482303380966, -0.014620862901210785, 0.03069968707859516, 0.0009034881950356066, 0.016917839646339417, -0.017041629180312157, -0.008933444507420063, -0.0007870061090216041, -0.006344189401715994, -0.01686282269656658, 0.012488940730690956, -0.005917804781347513, 0.007571764290332794, -0.0018396429950371385, 0.020040074363350868, 0.023423640057444572, 0.004882791079580784, -0.01081778947263956, -0.03221266716718674, 0.0007306992774829268, -0.00901597086340189, -0.014937213622033596, -0.006007208023220301, 0.013011605478823185, -0.0003887750208377838, 0.038622189313173294, -0.04104295372962952, -0.0022006945218890905, -0.01385062001645565, -0.0011613821843639016, 0.00528166675940156, 0.011546768248081207, 0.02030140720307827, -0.00022200364037416875, 0.020122600719332695, 0.013981286436319351, -0.019613690674304962, 0.03328550606966019, -0.008568954654037952, 0.0005626385100185871, -0.015817491337656975, -0.002539395121857524, -0.000888014561496675, 0.006368259433656931, 0.01673903316259384, 0.015308580361306667, 0.01649145409464836, -0.0017425029072910547, 0.023712482303380966, -0.021415509283542633, 0.0007513308082707226, 0.0006584890652447939, 0.006612398661673069, 0.022254522889852524, 0.012323888018727303, -0.00843141134828329, -0.03892478346824646, 0.02269466035068035, 0.015542403794825077, 0.00013303026207722723, 0.0015043809544295073, -0.0014390477444976568, -0.007475483696907759, 0.01224136259406805, 0.011663679964840412, 0.0055361222475767136, -0.009119127877056599, 0.03455090522766113, -0.022832203656435013, 0.009724318981170654, -0.016147596761584282, 0.017839379608631134, -0.0010513474699109793, -0.03961250185966492, -0.024936618283391, 0.01708289049565792, -0.022612133994698524, -0.00912600476294756, -0.017399240285158157, 0.0007190940668806434, 0.008156323805451393, 0.02138799987733364, 0.02874656952917576, -0.012963465414941311, 0.002157712122425437, 0.023189816623926163, -0.0011622417951002717, -0.0009206811082549393, -0.003019077470526099, -0.020810317248106003, 0.02162182331085205, 0.001497503719292581, -0.0018809059401974082, -0.0037480576429516077, 0.04646215960383415, 0.007207273971289396, 0.022639643400907516, -0.006020962260663509, 0.02052147686481476, 0.01039140485227108, -0.007227905560284853, -0.020122600719332695, 0.011780591681599617, -0.0031549017876386642, -0.0009782775305211544, 0.005123491864651442, -0.0008566374890506268, 0.0026563070714473724, -0.0318000353872776, 0.016904084011912346, -0.018719658255577087, 0.020232634618878365, -0.007523623760789633, -0.0005127789918333292, -0.018678395077586174, 0.0032408663537353277, -0.0149234589189291, 0.02008133754134178, -0.012935956940054893, 0.005415771622210741, 0.0034403041936457157, -0.003937180154025555, 0.007004397455602884, -0.017523029819130898, 0.003278690855950117, -0.014153216034173965, 0.013204166665673256, 0.017523029819130898, 0.01623012125492096, -0.03166249394416809, -0.006148189771920443, 0.02219950594007969, -0.012213854119181633, 0.0036861631087958813, -0.008864672854542732, -0.012819044291973114, 0.010618351399898529, 0.0016573979519307613, 0.022955993190407753, 0.013362341560423374, 0.010075055062770844, -0.037659384310245514, -0.009524880908429623, -0.01283967588096857, -0.007702430244535208, 0.002568623051047325, -0.031084807589650154, 0.014304513111710548, -0.0010212598135694861, 0.016642753034830093, 0.02638082392513752, -0.007042222190648317, -0.015074756927788258, -0.014634617604315281, 0.024056339636445045, 0.010577088221907616, -0.0052541582845151424, -0.0009851546492427588, -0.010198843665421009, -0.0026477104984223843, 0.008885304443538189, -0.0027646224480122328, 0.022502100095152855, 0.0015258720377460122, 0.012557712383568287, 0.004607704002410173, -0.02221325971186161, 0.0015516614075750113, -0.6342401504516602, -0.03964000940322876, 0.030727194622159004, -0.003758373437449336, 0.009098496288061142, 0.019875021651387215, 0.0078193424269557, -0.008623971603810787, -0.011835609562695026, 0.030589651316404343, -0.022625889629125595, -0.0036552157253026962, -0.020961616188287735, -0.0018086957279592752, -0.011374838650226593, -0.0042328983545303345, -0.0009413126390427351, -0.0032339892350137234, 0.02827892266213894, 0.004067846108227968, -0.03235020861029625, 0.023244833573698997, 0.006677731871604919, -0.019985057413578033, 0.0235061664134264, 0.0038718467112630606, 0.01911853440105915, -0.010384527035057545, -0.03474346548318863, -0.013224797323346138, -0.003779004793614149, 0.02089284360408783, -0.0079500088468194, -0.005185386631637812, 0.046984825283288956, -0.0007414448773488402, -0.04046526923775673, 0.041730668395757675, -0.005223210901021957, 0.016326403245329857, -0.03273533284664154, -0.008465796709060669, 0.007805587723851204, -0.0040540918707847595, -0.012984097003936768, -0.004260407295078039, 0.024166375398635864, -0.014359530992805958, -0.03664156422019005, -0.03749433159828186, 0.016051316633820534, 0.0210028775036335, -0.009284179657697678, 0.011257926933467388, 0.026064474135637283, -0.019985057413578033, 0.02136049047112465, -0.006894363090395927, 0.012819044291973114, 0.0002512316277716309, -0.013238552026450634, 0.0008673830307088792, -0.009407969191670418, -0.02530798502266407, -0.03295540064573288, 0.02434518188238144, -0.00817695539444685, 0.002618482569232583, 0.002468904247507453, -0.020947860553860664, 0.00359332119114697, 0.030507126823067665, 0.014717143960297108, -0.008795901201665401, 0.019985057413578033, 0.016532717272639275, 0.03430332615971565, -0.025596827268600464, -0.0058971731923520565, 0.027728749439120293, 0.01295658852905035, -0.030727194622159004, -0.02184189297258854, -0.010061300359666348, 0.028691552579402924, -0.010006282478570938, 0.0034574971068650484, -0.009765582159161568, 0.010109440423548222, 0.014194479212164879, 0.017165416851639748, 0.03716422989964485, 0.011085998266935349, -0.030974773690104485, -0.005477666389197111, 0.013829988427460194, -0.029929444193840027, -0.014304513111710548, 0.02222701534628868, -0.034825991839170456, -0.004955001175403595, 0.0199300404638052, 0.029819408431649208, -0.004102231934666634, 0.027481170371174812, -0.012096941471099854, -0.0040850392542779446, 0.007269168738275766, 0.014359530992805958, -0.03347806632518768, -0.023684972897171974, 0.012193222530186176, -0.03262529522180557, 0.012867185287177563, 0.011601785197854042, -0.025761878117918968, 0.002520482987165451, -0.023354869335889816, -0.005745875183492899, -0.01658773422241211, 0.01456584595143795, -0.012062556110322475, 0.012633360922336578, -0.0015516614075750113, -0.015363597311079502, -0.0033921641297638416, 0.018582114949822426, -0.030479617416858673, -0.00746172945946455, 0.009414846077561378, -0.036971669644117355, -0.006842784117907286, 0.012935956940054893, -0.0124683091416955, 0.014469565823674202, 0.005360754206776619, 0.004267284180969, -0.038622189313173294, -0.0078193424269557, -0.030011970549821854, -0.03944744914770126, -0.0017897834768518806, 0.024565251544117928, -0.001927326899021864, -0.01638142019510269, -0.028361449018120766, -0.008513936772942543, 0.016436437144875526, 0.007805587723851204, -0.0173304695636034, -0.019971303641796112, 0.0018654323648661375, 0.006289171986281872, 0.0024757813662290573, 0.01767432875931263, 0.0009696809574961662, 0.002157712122425437, -0.01896723546087742, 0.0005067614838480949, -0.020631510764360428, -0.0002169532235711813, 0.0014528020983561873, -0.0033629362005740404, -0.012124450877308846, 0.011402348056435585, -0.012715887278318405, -0.0036449001636356115, 0.020727790892124176, -0.026435840874910355, -0.04937807843089104, -0.001853397348895669, -0.0005832700408063829, 0.010604596696794033, 0.002372623886913061, 7.06521823303774e-05, 0.015005985274910927, -0.015019739046692848, -0.0011149612255394459, 0.0017622747691348195, -0.0004891387652605772, 0.011732451617717743, 0.03246024250984192, -0.0001286245824303478, 0.002159431576728821, 0.021759366616606712, 0.018444571644067764, 0.03669658303260803, 0.01959993503987789, 0.0012533642584457994, 0.009958142414689064, -0.011347330175340176, 0.022171996533870697, 0.030644670128822327, 0.009696810506284237, -0.005697735119611025, -0.001851678011007607, -0.025115424767136574, -0.021332982927560806, 0.0012748554581776261, 0.020397687330842018, 0.027893802151083946, 0.005965944845229387, 0.002009853022173047, 0.013885006308555603, 0.0018448008922860026, -0.0008940320694819093, 0.015624930150806904, -0.021580560132861137, 0.0040128291584551334, 0.0017536783125251532, 0.011581153608858585, -0.004360125865787268, -0.02112666703760624, -0.011037858203053474, 0.014964722096920013, 0.018114466220140457, -0.004807142075151205, 0.006859976798295975, -0.008500183001160622, -0.005206018220633268, 0.001343627111054957, 0.00984810758382082, 0.03798948973417282, -0.02937927097082138, -0.010583965107798576, -0.007963763549923897, -0.0027353945188224316, 0.016890330240130424, 0.0011673996923491359, -0.020700283348560333, 0.009428600780665874, 0.015143528580665588, 0.010370773263275623, 0.004095355048775673, 0.028443975374102592, 0.00883028656244278, -0.017055382952094078, 0.00860334001481533, 0.03408325836062431, 0.01588626392185688, -0.002809323836117983, -0.02207571640610695, 0.031469929963350296, -0.009490495547652245, 0.008678989484906197, 0.004614581353962421, 0.048525311052799225, 0.00889218132942915, -0.007839974015951157, 0.007805587723851204, -0.03116733394563198, -0.008713374845683575, -0.017234189435839653, -0.007798710837960243, -0.004349810071289539, -0.013314200565218925, 0.01515728235244751, 0.00017397092597093433, 0.02863653562963009, 0.027054786682128906, 0.01649145409464836, 0.03295540064573288, 0.01004066877067089, 0.01826576516032219, 0.015955034643411636, -0.0035451811272650957, 0.00623759301379323, 0.021896909922361374, 0.022625889629125595, -0.01217259094119072, 0.012365151196718216, -0.013410481624305248, -0.017468012869358063, -0.01980625092983246, 0.023313606157898903, -0.0015035212272778153, -0.03257028013467789, 0.009263549000024796, 0.0056702266447246075, 0.013245428912341595, -0.025871913880109787, -0.02675219066441059, 0.009339197538793087, 0.0002148041094187647, -0.014785915613174438, 0.005336684174835682, 0.004291354212909937, 0.003813390852883458, 0.0014158373232930899, 0.013651181943714619, 0.004728054627776146, -0.010549579747021198, -0.0199300404638052, 0.02210322581231594, 0.0010651018237695098, -0.011684311553835869, 0.011422978714108467, 0.0016573979519307613, -0.009573020972311497, -0.018568359315395355, 0.009002216160297394, 0.0033870062325149775, -0.005371070001274347, -0.02793506346642971, 0.048167698085308075, 0.004817457869648933, 0.0006838486297056079, -0.025115424767136574, -0.005006580147892237, -0.018059449270367622, 0.006471416912972927, -0.013052868656814098, 0.00259957043454051, -0.012186344712972641, 0.00623759301379323, -0.005804331507533789, -0.002596131758764386, -0.024895355105400085, 0.04321613907814026, 0.010590841993689537, -0.0015912051312625408, -0.009456109255552292, -0.02008133754134178, 0.018458325415849686, 0.08984334766864777, 0.0054811048321425915, -0.004814019426703453, 0.022419573739171028, -0.009029724635183811, -0.015198545530438423, -0.03224017471075058, -0.03548619896173477, 0.013162903487682343, 0.011477996595203876, -0.0026081667747348547, 0.0012284346157684922, 0.014153216034173965, -0.012310134246945381, 0.037686895579099655, 0.008747761137783527, 0.036476511508226395, -0.005852471571415663, -0.0023743431083858013, 0.008651480078697205, -0.01896723546087742, -0.023189816623926163, 0.01968246139585972, 0.030369583517313004, 0.015597421675920486, -0.029901934787631035, 0.03273533284664154, 0.02567935176193714, 0.007998148910701275, -0.015363597311079502, 0.01551489531993866, 0.008692743256688118, 0.007117870729416609, 0.00823885016143322, -0.002193817403167486, -0.015569913201034069, 0.025610581040382385, 0.006203207187354565, 0.0180456954985857, -0.0037136718165129423, 0.002474062144756317, 0.01033638697117567, -0.01610633358359337, -0.01433202251791954, 0.013816234655678272, -0.01367869134992361, -0.005653033498674631, 0.0518263541162014, -0.013059745542705059, -0.01968246139585972, -0.0027491487562656403, -0.01092094648629427, -0.017261696979403496, -0.028691552579402924, -0.006688047666102648, 0.02375374548137188, -0.009524880908429623, -0.009181022644042969, -0.011512381955981255, -0.05578760430216789, -0.00761302700266242, -0.0237674992531538, 0.03853966295719147, -0.00390967121347785, -0.006663977634161711, -0.014785915613174438, -0.01384374313056469, 0.00015033064119052142, -0.032542768865823746, 0.01354802493005991, 0.000962803780566901, -0.014950967393815517, -0.04739745333790779, 0.02127796597778797, 0.021209193393588066, -0.011567399837076664, 0.021346736699342728, -0.01198690664023161, 0.01983376033604145, 0.01801818609237671, 0.009428600780665874, 0.0016659944085404277, -0.0037171102594584227, -0.02210322581231594, 0.004160688258707523, -0.006588328629732132, 0.0007199537358246744, 0.012200099416077137, 0.016931593418121338, -0.008335130289196968, 0.006251347251236439, -0.00213536131195724, 0.013809356838464737, 0.0008265498327091336, 0.025252968072891235, 0.0003290296299383044, 0.023561183363199234, 0.01838955283164978, 0.015611175447702408, -0.00701815215870738, 0.020989123731851578, -0.007640535943210125, 0.0007590676541440189, -0.01574872061610222, 0.00889218132942915, 0.009875616990029812, 0.013362341560423374, -0.0032821292988955975, -0.003527988214045763, -0.009683055803179741, 0.011106629855930805, -0.02804509922862053, 0.020273897796869278, -0.028609026223421097, -0.013245428912341595, 0.017014119774103165, -0.01063210517168045, -0.013871251605451107, -0.00931856594979763, -0.009573020972311497, -0.015556158497929573, -0.023258589208126068, 0.01521230023354292, 0.00984123069792986, 0.0015576790319755673, 0.03031456470489502, -0.01521230023354292, -0.011257926933467388, -0.018100712448358536, 0.023368623107671738, 0.011670556850731373, 0.015556158497929573, -0.005952190607786179, -0.011656803078949451, 0.0036380228120833635, -0.05221147462725639, -0.012420169077813625, -0.03408325836062431, 0.009346074424684048, -0.007152256555855274, 0.015955034643411636, 0.011787469498813152, -0.006897801533341408, 0.002774938242509961, 0.03202010691165924, -0.025115424767136574, -0.01312851719558239, 0.02998446114361286, -0.0047005461528897285, 0.025981947779655457, -0.029049165546894073, 0.009985651820898056, -0.03174502030014992, -0.009201654233038425, -0.01145736500620842, -0.012378905899822712, 0.008479551412165165, -0.027151066809892654, 0.043876346200704575, 0.007839974015951157, 0.03424830734729767, -0.015624930150806904, 0.015858754515647888, -0.0037927592638880014, 0.0073723262175917625, 0.003127393079921603, 0.008018780499696732, 0.0018207307439297438, -0.014882195740938187, -0.012977219186723232, 0.019269831478595734, 0.0099650202319026, -0.006901239976286888, -0.011533013544976711, -0.008630848489701748, -0.009036601521074772, -0.0192148145288229, -0.014022549614310265, -0.035156093537807465, -0.030397091060876846, -0.0014897668734192848, -0.03149744123220444, -0.011601785197854042, -0.006175698712468147, -0.02899414859712124, -0.016037560999393463, 0.0418131947517395, 0.019173551350831985, -0.010157580487430096, -0.004047214984893799, 0.03353308141231537, -0.005683980882167816, 0.008479551412165165, 0.018912218511104584, 0.002726798178628087, -0.017481766641139984, -0.015267317183315754, -0.02734362706542015, 0.00013023641076870263, -0.019022252410650253, 0.013988163322210312, -0.004951562732458115, 0.04882790520787239, -0.008128815330564976, 0.004067846108227968, 0.006842784117907286, -0.008548323065042496, -0.004397950600832701, -0.016450190916657448, -0.028017589822411537, 0.00146913540083915, -0.018953481689095497, 0.003423111280426383, -0.012378905899822712, 0.015721211209893227, 0.020150110125541687, 0.010645859874784946, 0.015088510699570179, -0.05358690768480301, -0.014840932562947273, 0.04021769389510155, -0.0025342372246086597, 0.025376757606863976, -0.005171631928533316, 0.024922864511609077, 0.030122004449367523, 0.01768808253109455, -0.03543118014931679, -0.012440800666809082, 0.0038477766793221235, 0.009236039593815804, 0.03320297971367836, 0.028801588341593742, -0.027247346937656403, 0.011450488120317459, 0.007922500371932983, -4.655521479435265e-05, -0.0026477104984223843, -0.041868213564157486, 0.008452042005956173, -0.017124153673648834, 0.003727426053956151, -0.010185088962316513, -0.025473037734627724, 0.007193519733846188, 0.031827542930841446, -6.753596244379878e-05, 0.011835609562695026, -0.020232634618878365, -0.001043610624037683, 0.006784328259527683, 0.004614581353962421, 0.004181319382041693, 4.7764093324076384e-05, 0.028801588341593742, -0.01885720156133175, 0.009291057474911213, -0.013162903487682343, 0.009435477666556835, 0.006547065917402506, -0.006457662675529718, 0.026477104052901268, -0.00513380765914917, 0.016340157017111778, -0.0006718135555274785, 0.0033096380066126585, -0.009600529447197914, -0.016023807227611542, -0.0064989253878593445, 0.025156687945127487, -0.016216367483139038, -0.009689932689070702, 0.016422683373093605, 0.010109440423548222, 0.0021473965607583523, -0.01426325086504221, -0.015789983794093132, 0.0032064805272966623, -0.018073203042149544, 0.01686282269656658, 0.022295786067843437, -0.008761514909565449, -0.005151000805199146, -0.019008498638868332, -0.005628963466733694, -0.01613384112715721, 0.009758704341948032, -0.010824666358530521, -0.014221987687051296, 0.00010761696466943249, -0.01610633358359337, 0.025459282100200653, -0.008266358636319637, -0.01731671579182148, -0.011622416786849499, -0.014703389257192612, -0.008046288974583149, 0.028196396306157112, -0.026669664308428764, 0.012812167406082153, 0.002236799569800496, 0.02138799987733364, -0.002317606471478939, 0.013946901075541973, 0.0029571829363703728, -0.02389128878712654, 0.003631145693361759, -0.025500545278191566, -0.025390511378645897, -0.018774675205349922, 0.01932484842836857, -0.007152256555855274, -0.029296744614839554, -0.002840271219611168, 1.9436065485933796e-05, -0.008465796709060669, 0.010762771591544151, -0.003225392661988735, -0.02125045657157898, 0.018348291516304016, 0.016518963500857353, 0.004064407665282488, 0.032652806490659714, -0.029461795464158058, 0.021291719749569893, -0.007764325011521578, 0.0011785750975832343, -0.007262291386723518, -0.020879089832305908, -0.01289469376206398, 0.0007594974595122039, 0.03383567929267883, -0.005446719005703926, -0.03166249394416809, -0.033395539969205856, 0.0030534635297954082, -0.01766057312488556, -0.012083187699317932, 0.011698066256940365, 0.004827773664146662, 0.02495037205517292, 0.02613324485719204, 0.029819408431649208, -0.009277302771806717, -0.02781127579510212, -0.02807260863482952, 0.017756853252649307, -0.02651836723089218, -0.018815938383340836, -0.017014119774103165, -0.0005708051612600684, 0.06260976195335388, -0.004930931143462658, -0.02481282874941826, 0.00028346836916171014, -0.006158505566418171, -0.02222701534628868, -0.01972372457385063, 0.009834353812038898, 0.0010118037462234497, 0.031717509031295776, 0.02600945718586445, 0.00032688051578588784, 0.028251413255929947, -0.011443610303103924, 0.028801588341593742, -0.0011012068716809154, -0.02160806953907013, 0.034688446670770645, -0.0192148145288229, 0.001748520415276289, -0.008410779759287834, -0.03669658303260803, -0.009167267940938473, 0.011808101087808609, 0.020328916609287262, 0.013444866985082626, 0.0052851056680083275, -0.027261100709438324, -0.015308580361306667, -0.008685866370797157, -0.01111350767314434, -0.005563630722463131, 0.01982000470161438, 0.023588692769408226, -0.028691552579402924, -0.012385782785713673, -0.018595868721604347, -0.02924172580242157, 0.011704943142831326, -0.02053523063659668, 0.013369218446314335, -0.009401092305779457, 0.033395539969205856, 0.004521739669144154, 0.009538635611534119, 0.011835609562695026, -0.016450190916657448, 0.039089836180210114, 0.004305108450353146, 0.003400760469958186, 0.03191006928682327, 0.02207571640610695, -0.03042460046708584, -0.013706199824810028, 0.003596759866923094, -0.0021044141612946987, -0.018568359315395355, -0.004604265559464693, 0.008342008106410503, 0.0016651347978040576, 0.0021078528370708227, 0.0005153579404577613, -0.0031394280958920717, 0.008293867111206055, 0.0025583074893802404, 0.0149234589189291, -0.021649332717061043, 0.025638088583946228, 0.009923757053911686, 0.010102563537657261, -0.004769317805767059, -0.0034093570429831743, 0.001492345822043717, -0.0071041164919734, -0.013039113953709602, -0.013823111541569233, -0.01755053922533989, -0.03383567929267883, 0.024977881461381912, -0.016326403245329857, -0.03210263326764107, 0.02603696472942829, 0.018760921433568, -0.01789439655840397, 0.007489237934350967, 0.20895592868328094, 0.004549248144030571, -0.009813722223043442, 0.037081703543663025, -0.018692148849368095, 0.028443975374102592, 0.03372564539313316, -9.644155943533406e-05, 0.0013926270185038447, -0.016408927738666534, 0.00228150119073689, 0.012378905899822712, 0.003985320217907429, -0.0038856009487062693, 0.010652736760675907, -0.012165713123977184, -0.01577622815966606, -0.008273236453533173, -0.006849661469459534, 0.04492167383432388, 0.018692148849368095, -0.00587998004630208, 0.012935956940054893, -0.020122600719332695, 0.017027873545885086, 0.009930633939802647, -0.006247908808290958, 0.008108183741569519, -0.0018207307439297438, 0.009641792625188828, -0.01957242749631405, -0.010749016888439655, 0.009291057474911213, 0.025596827268600464, 0.026353314518928528, -0.012516449205577374, 0.004618019796907902, 0.02221325971186161, 0.01756429299712181, 0.02281844988465309, 0.014552091248333454, -0.021676840260624886, -0.0040128291584551334, -0.007159133907407522, -0.004112547729164362, 0.016422683373093605, -0.00016429989773314446, -0.006223838776350021, -0.00492061534896493, 0.0021955366246402264, -0.027508679777383804, 0.006316680461168289, 0.033505573868751526, 0.025638088583946228, -0.005577385425567627, 0.005223210901021957, 0.022873466834425926, -0.0005428666481748223, 0.016408927738666534, 0.01521230023354292, -0.0281551331281662, 0.024620268493890762, -0.0012507853098213673, 0.012557712383568287, -0.007901868782937527, 0.008170078508555889, 0.006839345674961805, 0.02160806953907013, 0.022708414122462273, -0.016986610367894173, 0.0014596793334931135, -0.004910299554467201, -0.011134139262139797, 0.016161350533366203, -0.012227607890963554, -0.03796198219060898, 0.016147596761584282, 0.01660148985683918, -0.01684906706213951, 0.008685866370797157, 0.01032263319939375, 0.02127796597778797, 0.017976922914385796, -0.016422683373093605, -0.017646819353103638, -0.020686527714133263, 0.01371995359659195, 0.011182279326021671, 0.012365151196718216, -0.0002568193303886801, -0.004882791079580784, -0.028966639190912247, -0.004504546523094177, -0.032900381833314896, 0.010673368349671364, 0.01768808253109455, 0.03526613116264343, 0.0027594645507633686, -0.03045210801064968, -0.021690595895051956, -0.025142932310700417, 0.024386445060372353, 0.01972372457385063, 0.02481282874941826, -0.006378575228154659, -0.009263549000024796, -0.012392660602927208, 0.02468903921544552, 0.01104473602026701, -0.021443016827106476, 0.00433261739090085, -0.00973807368427515, 0.010116317309439182, -0.008678989484906197, 0.0011123822769150138, 0.030232038348913193, -0.029929444193840027, -0.025706861168146133, 0.01816948503255844, 0.0017811870202422142, 0.019366111606359482, -0.02266715094447136, -0.0086652347818017, 0.00492061534896493, 0.0031033228151500225, -0.03738429769873619, -0.0369991771876812, 0.006615837570279837, 0.003916548565030098, 0.0028952884022146463, -0.015473632141947746, -0.004064407665282488, 0.012942833825945854, -0.02056274004280567, -0.003094726474955678, -0.009325442835688591, 0.0059212432242929935, -0.017371732741594315, -0.02687598019838333, -0.010577088221907616, -0.004789949394762516, -0.007502992637455463, 0.011773714795708656, 0.01768808253109455, 0.023671219125390053, -0.020865334197878838, 0.016450190916657448, 0.004951562732458115, -0.019036008045077324, -0.020507721230387688, -0.006354505196213722, -0.009215408004820347, 0.014717143960297108, 0.0026305175852030516, 0.028471482917666435, 0.015611175447702408, -0.010941578075289726, -0.00823197327554226, -0.015968790277838707, -0.012138204649090767, -0.05394452065229416, 0.02103038690984249, 0.0053091756999492645, -0.021071650087833405, -0.044013891369104385, 0.002362308092415333, -0.17649570107460022, 0.014304513111710548, -0.001273995847441256, -0.015707457438111305, 0.020232634618878365, -0.00889218132942915, -0.0034574971068650484, -0.007833097130060196, -0.010790280066430569, -0.023932551965117455, 0.03226768225431442, -0.004611142911016941, -0.037439316511154175, -0.02115417644381523, 0.00931168906390667, 0.024537742137908936, -0.01682155951857567, 0.024909108877182007, 0.0031308315228670835, 0.0061309970915317535, -0.00029894200270064175, -0.018788428977131844, -0.007716184947639704, -0.02409760281443596, 0.026834717020392418, -0.002257431158795953, -0.0015525211347267032, 0.005673665087670088, -0.003039709059521556, 0.0033629362005740404, -0.017165416851639748, 0.0018723094835877419, 0.027123557403683662, 0.010515193454921246, 0.04428897798061371, -0.010975964367389679, -0.009029724635183811, 0.0012095223646610975, -0.015927527099847794, 0.03941994160413742, -0.000785286829341203, 0.019077271223068237, 0.012282625772058964, -0.008486428298056126, -0.010618351399898529, 0.02186940237879753, -0.004511423874646425, 0.004171004053205252, 0.02151178941130638, -0.034330833703279495, 0.02412511222064495, -0.037521842867136, -0.0031841297168284655, -0.005353877320885658, 0.023726236075162888, 0.018705902621150017, 0.018595868721604347, 0.008947198279201984, 0.010350141674280167, -0.0284164659678936, -0.018815938383340836, -0.007083484902977943, 0.014414547942578793, -0.01910477876663208, -0.028031345456838608, -0.012317011132836342, -0.003957811743021011, 0.003854653798043728, -0.031579967588186264, 0.003555496921762824, -0.007427343633025885, -0.004734931979328394, 0.02948930487036705, 0.008355761878192425, 0.0006632170989178121, -0.007289800327271223, 0.003961250185966492, -0.0008007604628801346, -0.002694131573662162, -0.008011903613805771, -0.022006945684552193, 0.013644305057823658, -0.012447677552700043, -0.035156093537807465, 0.0011871715541929007, -0.015501141548156738, 0.01169118843972683, 0.018472079187631607, 0.002460307674482465, -0.006289171986281872, -0.008273236453533173, -0.03526613116264343, 0.01873341202735901, 0.010872806422412395, -0.012330765835940838, 0.01709664613008499, 0.019283585250377655, 0.013795603066682816, 0.004851843696087599, -0.014387039467692375, -0.01682155951857567, 0.004095355048775673, -0.01874716579914093, 0.020452704280614853, 0.00542952585965395, 0.006409522145986557, -0.004081600811332464, 0.02065902017056942, -0.0018207307439297438, 0.00034729711478576064, -0.03155245631933212, 0.01521230023354292, 0.021759366616606712, 0.02136049047112465, -0.008905936032533646, 0.010604596696794033, -0.012433922849595547, -0.0062994877807796, 0.01129231322556734, 0.006155067123472691, 0.04104295372962952, 0.008293867111206055, -0.03727426379919052, 0.005680542439222336, 0.00716601125895977, -0.035046059638261795, -0.09462985396385193, -0.013011605478823185, 0.005477666389197111, 0.004979071207344532, -0.00960740726441145, 0.021415509283542633, 0.0003724417183548212, 0.025569317862391472, -0.03248775377869606, 0.034715957939624786, -0.012633360922336578, -0.04098793491721153, 0.0019324847962707281, -0.006399206817150116, 0.026944750919938087, -0.023960059508681297, -0.00739983469247818, -0.012592097744345665, -0.004095355048775673, 0.02734362706542015, 0.01312851719558239, -0.017536785453557968, 0.025748124346137047, -0.028581518679857254, 0.010439544916152954, -0.017124153673648834, -0.03716422989964485, 0.014524582773447037, 0.02496412582695484, 0.007434220518916845, 0.02397381328046322, -0.003823706414550543, 0.002914200769737363, -0.01426325086504221, -0.013080377131700516, -0.0032133576460182667, -0.038732223212718964, 0.012880939058959484, 0.018320782110095024, -0.03592633828520775, 0.0007848570239730179, 0.014730897732079029, 0.004501108080148697, -0.024207638576626778, -0.026765944436192513, -0.015171037055552006, -0.015721211209893227, 0.01576247438788414, -0.0021491157822310925, -0.02052147686481476, -0.02662840113043785, -0.025252968072891235, -0.01968246139585972, -0.015501141548156738, 0.011381716467440128, -0.006392329465597868, 0.02877407893538475, -0.007031906396150589, 0.0013762937160208821, 0.010350141674280167, -0.011656803078949451, 0.009435477666556835, 0.00014184163592290133, 0.007537378463894129, 0.019173551350831985, -0.0034609357826411724, -0.017990678548812866, -0.010377650149166584, 0.009366706013679504, 0.002394974697381258, -0.005316052585840225, 0.016147596761584282, -0.013087254017591476, 0.004095355048775673, -0.02888411469757557, -0.006141312886029482, -0.006945941597223282, -0.012447677552700043, 0.019971303641796112, 0.020026320591568947, -0.0077230618335306644, -0.013891883194446564, 0.017055382952094078, -0.004501108080148697, 0.031112316995859146, 0.019627444446086884, -0.015831246972084045, -0.0020665896590799093, 0.03639398515224457, -0.004899983759969473, 0.006901239976286888, 0.030259547755122185, -0.004587072879076004, -0.02759120613336563, 0.02339613251388073, -0.009394214488565922, 0.0024534305557608604, 0.0040231444872915745, -0.025486791506409645, -0.0034110762644559145, -0.037521842867136, 0.0180456954985857, -0.06514056026935577, 0.0470123328268528, -0.018719658255577087, -0.029104182496666908, -0.013293569907546043, -0.00034751201746985316, 0.018650885671377182, -0.036118898540735245, 0.007110993843525648, 0.01899474486708641, -0.03191006928682327, -0.005016895942389965, -0.02544552832841873, -0.0075442553497850895, -0.018362045288085938, -0.022873466834425926, 0.013045991770923138, -0.02543177455663681, 0.018898464739322662, 0.003782443469390273, 0.006010646466165781, 0.013011605478823185, 0.003244304796680808, -0.002793850377202034, -0.010308878496289253, -0.012000661343336105, -0.013059745542705059, 0.005426087416708469, 0.01959993503987789, -0.01933860406279564, 0.016505209729075432, -0.007227905560284853, -0.01062522828578949, 0.036944158375263214, -0.03702668473124504, -0.03163498267531395, -0.0016376260900869966, 0.0006756819784641266, -0.0038615309167653322, 0.01972372457385063, -0.013293569907546043, -0.026188263669610023, 0.005291982553899288, -0.016051316633820534, -0.022254522889852524, -0.019297340884804726, 0.023905042558908463, 0.00036900315899401903, -0.009297934360802174, 0.001420995220541954, -0.0029021657537668943, -0.0069184331223368645, -0.009641792625188828, -0.018650885671377182, -0.004666160326451063, -0.020879089832305908, 0.02042519673705101, -0.007025029044598341, -0.021443016827106476, -0.00039737147744745016, 0.028196396306157112, 0.020590247586369514, 0.009366706013679504, -0.0016651347978040576, -0.0008201025193557143, 0.0054948590695858, -0.026587139815092087, 0.0021078528370708227, 0.02518419548869133, 0.0027336752973496914, -0.016450190916657448, 0.0018344850977882743, 0.007296677213162184, 0.009985651820898056, -0.003947495948523283, -0.01755053922533989, 0.014125706627964973, -0.0012937677092850208, -0.03906232863664627, 0.007427343633025885, 0.006165382917970419, -0.02745366282761097, -0.012963465414941311, -0.0131835350766778, -0.008011903613805771, 0.0032614979427307844, -0.03298290818929672, 0.009628038853406906, 0.011409224942326546, 0.005013457033783197, 0.0037239876110106707, 0.013045991770923138, -0.008940321393311024, -0.0011579436250030994, -0.0009181022178381681, -0.0014545214362442493, -0.005443280562758446, 0.014717143960297108, 0.0033423046115785837, 0.0334230475127697, 0.008706497959792614, 0.00012163994688307866, 0.014008794911205769, -0.01825200952589512, -0.0019118532072752714, 0.009717442095279694, -0.038016997277736664, -0.007839974015951157, -0.007833097130060196, 0.006832468323409557, 0.0173304695636034, 0.04750749096274376, 0.011264803819358349, 0.009999405592679977, -0.02101663313806057, -0.0109897181391716, -0.01565244048833847, -0.04046526923775673, -0.01598254404962063, 0.03675159811973572, 0.043408699333667755, 0.021910665556788445, 0.0012662590015679598, -0.01686282269656658, 0.034220799803733826, 0.02745366282761097, 0.029104182496666908, -0.01898099109530449, 0.01911853440105915, 0.020012564957141876, 0.010253860615193844, -0.01671152375638485, -0.0180456954985857, -0.00025359564460814, -0.018925972282886505, -0.008713374845683575, -0.01744050346314907, -0.008025658316910267, -0.001963432179763913, 0.06811149418354034, 0.0108590517193079, 0.0022969748824834824, 0.024771565571427345, -0.017756853252649307, -0.0065058027394115925, 0.00329760299064219, 0.0029124815482646227, -0.0015791701152920723, -0.013472375459969044, 0.0029967266600579023, -0.003930302802473307, 0.017179172486066818, 0.003141147317364812, -0.009332320652902126, -0.014607109129428864, 0.01790815219283104, 0.050533443689346313, -0.0284164659678936, -0.004893106874078512, 0.03975004330277443, 0.0024809392634779215, 0.0032804100774228573, 0.010288246907293797, 0.0008897338411770761, 0.0018860638374462724, 0.024523988366127014, 0.01003379188477993, 0.010253860615193844, -0.029516814276576042, 0.0013900480698794127, 0.019875021651387215, -0.045059215277433395, -0.014001918025314808, -0.020631510764360428, -0.005367631558328867, -0.013713076710700989, -0.02998446114361286, -0.008197586983442307, -0.004879352170974016, 0.0023502730764448643, 0.009731195867061615, -0.01092094648629427, -0.02387753315269947, -0.011299190111458302, -0.0007921640062704682, -0.01898099109530449, -0.01270213257521391, -0.033973220735788345], '_distance': 0.40156954526901245}), Document(page_content=\"I have a group chat with three AI friends, thanks to Nomi AI — they're getting too smart | TechCrunch\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n \\n\\n\\n\\n \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nTechCrunch\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nplus-bold\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nTechCrunch\\n\\n\\nOpen Navigation\\n\\n\\n\\n\\n\\n\\nTechCrunch\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nI have a group chat with three AI friends, thanks to Nomi AI — they’re getting too smart\\n\\n\\n\\n\\n\\t\\t\\tAmanda Silberling\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t2 days\", metadata={'vector': [-0.01198604516685009, -0.02511361986398697, 0.022259799763560295, -0.018196502700448036, 0.009370043873786926, 0.03639300540089607, -0.00867017824202776, 0.005598923657089472, -0.026635656133294106, -0.02495054341852665, 0.0032156440429389477, -0.009057482704520226, 0.017122922465205193, -0.012149120680987835, -0.0054732197895646095, 0.011517203412950039, 0.027315137907862663, 0.013793464750051498, 0.012502451427280903, -0.020302893593907356, -0.033783797174692154, 0.022912099957466125, -0.0022626719437539577, 0.00098100071772933, -0.014337049797177315, -0.02527669444680214, 0.008751715533435345, -0.03810529783368111, 0.0038526575081050396, -0.005751807242631912, 0.022395694628357887, -0.008710946887731552, -0.0010047826217487454, 0.005391682032495737, -0.017856761813163757, -0.004562715068459511, -0.009417607448995113, -0.002424048725515604, 0.02201518602669239, -0.009404017589986324, 0.019215723499655724, -0.0033073739614337683, -0.0017683494370430708, -0.01960982196033001, -0.03693658858537674, 0.00696468073874712, 0.0021658458281308413, -0.00635314779356122, -0.01649780012667179, 0.0037201587110757828, 0.024542855098843575, 0.012910139746963978, -0.02656770870089531, -0.02087365835905075, -0.022259799763560295, 0.023455685004591942, -0.012848986312747002, 0.012006429955363274, 0.00469181640073657, 0.025127209722995758, -0.003383815521374345, -0.009206968359649181, -0.009770937263965607, 0.012753859162330627, 0.001234107417985797, -0.0022796588018536568, -0.017299586907029152, 0.02088724635541439, 0.00468841940164566, -0.016090111806988716, 0.014907813630998135, -0.00234420970082283, -0.006791412830352783, -0.019174955785274506, 0.00810620840638876, 0.00036500871647149324, -0.013080010190606117, -0.0025497525930404663, -0.0033583350013941526, 0.0063565452583134174, 0.012896549887955189, -0.017041385173797607, -0.0009589176042936742, 0.018726497888565063, 0.022151082754135132, 0.0005036653019487858, 0.020370841026306152, 0.012305401265621185, 0.015329092741012573, -0.012142326682806015, 0.012087968178093433, 0.013419750146567822, 0.0064618648029863834, 0.023238250985741615, -0.027451034635305405, 0.02799461968243122, -0.01683754101395607, 0.0035095196217298508, 0.00015691765293013304, -0.016932668164372444, 0.005106300115585327, -0.00046077309525571764, -0.029842806980013847, -0.006998654920607805, -0.010769774205982685, -0.0005631198873743415, 0.009268121793866158, 0.021172629669308662, 0.024542855098843575, 0.008364412002265453, 0.017707275226712227, 0.018264450132846832, 0.0028283398132771254, -0.033756617456674576, -0.013834234327077866, -0.01666087470948696, 0.014649610966444016, -0.026757963001728058, -0.02170262485742569, -0.03060382604598999, 0.0174898412078619, 0.013854618184268475, 0.019976742565631866, 0.004695213865488768, 0.01864496059715748, 0.03169099614024162, -0.00015776700456626713, -0.024162346497178078, -0.0033379506785422564, -0.020995963364839554, 0.032615091651678085, 0.0119113028049469, 0.033267389982938766, 0.023605171591043472, -0.03400123119354248, 0.0178024023771286, -0.024257473647594452, 0.00481752073392272, -0.010464007966220379, 0.0035366988740861416, -0.00334134791046381, 0.028619742020964622, -0.004902455490082502, -0.0009877955308184028, -0.015791138634085655, 0.03462635353207588, 0.014690380543470383, 0.01004952471703291, 0.016959846019744873, 0.0029183709993958473, 0.005327131599187851, -0.0005355160101316869, -0.01795188896358013, 0.008833253756165504, 0.02057468518614769, 0.0168647188693285, 0.013548851944506168, 0.01618523895740509, -0.019528284668922424, -0.0025174773763865232, -0.027437444776296616, 0.019677771255373955, 0.014595252461731434, -0.009363248944282532, 0.004501562099903822, 0.024556444957852364, -0.0008676123688928783, -0.01619882881641388, -0.019637001678347588, -0.0034789429046213627, 0.001399730914272368, 0.010477597825229168, -0.00013950595166534185, 0.006512825842946768, -0.010042729787528515, 0.01295090839266777, 0.017530610784888268, -0.0002293248544447124, -0.02298004925251007, 1.3111860425851773e-05, 0.01369154267013073, 0.00947876088321209, 0.012121941894292831, 0.004076886456459761, -0.0004047158872708678, 0.0030576647259294987, 0.02091442607343197, -0.02995152398943901, 0.010029139928519726, -0.0010226189624518156, 0.010328112170100212, 0.009009918197989464, -0.019405977800488472, -0.03549608960747719, -0.6244702339172363, -0.03332174941897392, 0.027940260246396065, -0.006533210165798664, 0.025032080709934235, 0.023034406825900078, -0.0036420184187591076, -0.0072160884737968445, -0.012882960960268974, 0.03688222914934158, -0.027097703889012337, -0.004583099856972694, -0.009193378500640392, -0.010749390348792076, 0.006781220901757479, -0.02026212401688099, 0.0238226056098938, -0.02962537296116352, 0.003920605406165123, 0.022572360932826996, -0.021145449951291084, -0.010131062008440495, -0.001972193829715252, -0.03707248717546463, -0.01958264410495758, -0.013970130123198032, -0.009451581165194511, -0.01956905424594879, -0.039274003356695175, 0.01815573312342167, -0.05212978646159172, 0.0030423763673752546, 0.0065841712057590485, -0.03419148549437523, 0.05359746515750885, -0.0060711633414030075, -0.015193196013569832, 0.02851102501153946, 0.0012375048827379942, -0.0007758823921903968, -0.037018127739429474, -0.0029013841412961483, -0.0030355816707015038, 0.0017479649977758527, 0.009404017589986324, 0.004199192859232426, 0.0199359729886055, -0.007243267726153135, 0.0032903868705034256, -0.02851102501153946, 0.017584970220923424, 0.0034262831322848797, -0.025847459211945534, 0.0024019654374569654, 0.012740269303321838, -0.004233167041093111, 0.03177253529429436, 0.008248900063335896, 0.012149120680987835, -0.0032581116538494825, -0.011456049978733063, -0.014989351853728294, -0.028782816603779793, -0.021145449951291084, -0.026825912296772003, 0.03998066484928131, 0.0045117540284991264, 0.00753544457256794, 0.004175411071628332, -0.027885902673006058, 0.03514276072382927, 0.00937683880329132, -0.03454481437802315, 0.009220557287335396, 0.008642998524010181, 0.035224296152591705, 0.0349796824157238, -0.0012536424910649657, -0.019066238775849342, 0.014065257273614407, 0.012563604861497879, -0.0275189820677042, -0.019637001678347588, -0.030821260064840317, -0.0037371458020061255, -0.012244248762726784, -0.021756982430815697, -0.014445766806602478, -0.01992238499224186, -0.017218049615621567, 0.017394714057445526, 0.025942586362361908, -0.00875851046293974, -0.01766650751233101, 0.012651937082409859, 0.020764941349625587, -0.008459539152681828, 0.002802859293296933, 0.004579702392220497, -0.029272044077515602, 0.004036117345094681, -0.03432738408446312, 0.03777914494276047, 0.007379163987934589, 0.0007440317422151566, 0.004929634742438793, -0.01229181233793497, 0.01652497984468937, 0.0401165597140789, -0.02701616659760475, -0.015546525828540325, -0.007793647702783346, -0.006414301227778196, 0.0012748762965202332, -0.01666087470948696, -0.02285774238407612, 0.007841210812330246, 0.010497981682419777, 0.003740543033927679, -0.01751702092587948, 0.029108967632055283, -0.01117066852748394, 0.0220015961676836, -0.013372186571359634, 0.01310718897730112, -0.0010396059369668365, 0.007508265320211649, -0.01205399353057146, -0.036855053156614304, -0.00753544457256794, 0.002125076949596405, 0.003229233669117093, 0.0018006247701123357, -0.005680461414158344, 0.005238798912614584, -0.01424192264676094, 0.0024750097654759884, -0.025344643741846085, 0.046911370009183884, 0.013956540264189243, -0.006645324639976025, -0.0020214561372995377, 0.006278404965996742, -0.0043147047981619835, -0.010355290956795216, -0.025208747014403343, -0.005976035725325346, 0.0008051850600168109, -0.01751702092587948, -0.022749025374650955, 0.016457030549645424, 0.011625920422375202, -0.007059807889163494, 0.020832888782024384, 0.018563421443104744, -0.01295090839266777, -0.022749025374650955, -0.023836195468902588, -0.007086987141519785, -0.0023900745436549187, -0.0015025024767965078, 0.02785872295498848, 0.002057128818705678, -0.006940898951143026, -0.01051836647093296, -0.02576592192053795, -0.021308526396751404, 0.028375128284096718, -0.017258819192647934, -0.019704950973391533, -0.01229181233793497, -0.01910700649023056, -0.024080807343125343, -0.00841197557747364, 0.004956813994795084, 0.029706910252571106, -0.015111658722162247, -0.0005151315708644688, 0.005361105315387249, -0.006910322234034538, -0.012332580983638763, -0.013643979094922543, -0.007324805483222008, -0.012264632619917393, 0.038621701300144196, -0.014989351853728294, 0.04628624767065048, 0.03321303427219391, -0.0026737579610198736, 0.04090476036071777, -0.01450012531131506, 0.028755636885762215, -0.007990697398781776, 0.006550197023898363, -0.004943224601447582, 0.020166996866464615, 0.012087968178093433, -0.004936429671943188, 0.015763960778713226, 0.018821625038981438, 0.01863137073814869, 0.01572319120168686, 0.036691974848508835, -0.01895752176642418, 0.012074378319084644, -0.013480903580784798, 0.005408668890595436, -0.01296449825167656, 0.009825295768678188, 0.010783364064991474, 0.007854800671339035, 0.009261326864361763, -0.012318991124629974, -0.013956540264189243, 0.007161729969084263, 0.021023143082857132, -0.0052455938421189785, 0.005082518327981234, -0.024488497525453568, 0.005435848142951727, -0.0024053629022091627, -0.014133205637335777, 0.007888775318861008, -0.012848986312747002, -0.014649610966444016, 0.026336684823036194, 0.0207513514906168, 0.02139006368815899, 0.0073180110193789005, -0.026988986879587173, -0.02414875663816929, 0.0049466220661997795, -0.0089012011885643, 0.013345007784664631, 0.012094762176275253, -0.010695031844079494, 0.019405977800488472, -0.009764142334461212, 0.03258791193366051, -0.0006213004817254841, -0.01845470443367958, -0.007331600412726402, 0.036039672791957855, -0.026132840663194656, 0.024026449769735336, 0.009716578759253025, 0.056424107402563095, -0.006346352864056826, 0.0015449699712917209, 0.004399639554321766, -0.039464257657527924, -0.0036725951358675957, -0.019324440509080887, 0.0013283854350447655, 0.03481660783290863, -0.03076690249145031, 0.008167361840605736, 0.005812960211187601, 0.004786944016814232, 0.036338645964860916, -0.0022269990295171738, 0.015002941712737083, -0.0018719702493399382, 0.007297626230865717, 0.0024291446898132563, -0.016796771436929703, 0.014146795496344566, -0.0017768429825082421, -0.014771917834877968, -0.020370841026306152, -0.015002941712737083, -0.0049636089242994785, -0.018848804756999016, -0.0008540227427147329, 0.03275098651647568, 0.006047381088137627, -0.008167361840605736, 0.003529903944581747, -0.007800442166626453, 0.02205595374107361, 0.013134368695318699, -0.04142116382718086, 0.02124057710170746, 0.026010533794760704, -0.007854800671339035, -0.00348234036937356, -0.016253186389803886, 0.004610278643667698, -0.014527305029332638, 0.0058061652816832066, -0.0003645840333774686, 0.007915954105556011, -0.03451763838529587, 0.013263469561934471, -0.019732128828763962, 0.0033600337337702513, 0.014934993349015713, -0.017734454944729805, 0.014554483816027641, -0.00725006265565753, 0.028891533613204956, 0.002215108135715127, -0.009777732193470001, -0.01667446456849575, 0.011564766988158226, -0.005571744404733181, -0.013372186571359634, -0.020520327612757683, -0.015927035361528397, -0.01482627633959055, -0.015002941712737083, -0.007705315016210079, -0.0046306634321808815, 0.0004883770016022027, 0.015600884333252907, 0.01287616603076458, -0.0064210956916213036, -0.0226946659386158, 0.01602216251194477, -0.002824942348524928, -0.00022316705144476146, -0.03951861709356308, -0.043160635977983475, 0.007752878591418266, 0.10877132415771484, 0.030549468472599983, -0.0026397837791591883, 0.009940807707607746, 0.00794313382357359, 0.0035163143184036016, -0.00937683880329132, -0.025371821597218513, 0.02655411884188652, -0.024733109399676323, -0.012631552293896675, 0.021824931725859642, 0.027967439964413643, -0.002393472008407116, 0.014078847132623196, -0.0008383097592741251, 0.01391577161848545, -0.022749025374650955, 0.009349659085273743, -0.023754656314849854, 0.018889572471380234, -0.012543220072984695, -0.009145814925432205, 0.004487972240895033, 0.021485190838575363, -0.001375099760480225, 0.027138473466038704, 0.013066420331597328, -0.024243883788585663, -0.03060382604598999, 0.034599173814058304, 0.014649610966444016, -0.01132694911211729, -0.001059141126461327, -0.01683754101395607, -0.0013564140535891056, 0.01604934222996235, 0.03245201334357262, -0.0020961989648640156, 0.0057416148483753204, -0.0017063467530533671, 0.011034771800041199, 0.01310718897730112, -0.016402672976255417, -0.006322571076452732, -0.016443440690636635, -0.00023569498443976045, 0.02235492691397667, -0.025874638929963112, -0.03465353325009346, 0.01180938072502613, 0.0058061652816832066, -0.0366104394197464, -0.02281697280704975, -0.012733474373817444, 0.03883913531899452, -0.021634675562381744, -0.014975761994719505, 0.02121339738368988, -0.024733109399676323, -0.00970978382974863, -0.0320986844599247, 0.007936338894069195, -0.015233964659273624, -0.014282691292464733, -0.04264422878623009, -0.020153407007455826, 0.014731149189174175, -0.003188464790582657, 0.009356454014778137, 0.008663383312523365, -0.0029183709993958473, -0.027750005945563316, 0.002852121600881219, 0.0019823859911412, 0.00817415677011013, 0.03324021399021149, 0.009940807707607746, -0.014771917834877968, 0.03405559062957764, 0.007766468450427055, -0.023836195468902588, 0.003991951234638691, -0.03185407072305679, 0.00567026948556304, -0.006760836578905582, -0.013630390167236328, -0.0070054493844509125, -0.015057300217449665, -0.004644252825528383, 0.0076033929362893105, -0.00874492060393095, 0.006726862397044897, 0.029924344271421432, 0.002029949566349387, 0.007888775318861008, 0.002607508562505245, 0.013460519723594189, -0.002702635945752263, 0.003971566911786795, 0.015261144377291203, -0.024542855098843575, -0.02054750733077526, -0.00875851046293974, 0.010538751259446144, -0.012244248762726784, 0.03109305165708065, 0.039409901946783066, -0.013650774024426937, -0.004922840278595686, 0.015628064051270485, 0.011639510281383991, 0.012699500657618046, -0.00773249426856637, -0.001909341779537499, 0.001543271355330944, 0.033729437738657, 0.0071821147575974464, -0.001866874168626964, -0.02916332706809044, -0.00786159560084343, -0.036039672791957855, 0.016946258023381233, -0.0032479194924235344, -0.008928380906581879, 0.0063905189745128155, -0.003078049048781395, -0.026825912296772003, -0.0036318262573331594, 0.012189890258014202, -0.014649610966444016, -0.00295574264600873, -0.001688510412350297, -0.04324217513203621, -0.006203662138432264, -0.018658548593521118, -0.017367536202073097, 0.031364843249320984, 0.000817925320006907, 0.0012239152565598488, -0.005333926063030958, 0.018386757001280785, 0.009770937263965607, -0.014527305029332638, -0.009927217848598957, -0.0333489291369915, -0.0036522105801850557, -0.009954397566616535, 0.034707892686128616, 0.03503404185175896, -0.011768612079322338, 0.019840845838189125, -0.017068563029170036, -0.003957977052778006, -0.0036895819939672947, -0.01713651232421398, 0.013616800308227539, 0.020112639293074608, 0.021458011120557785, 0.015424219891428947, 0.02754616178572178, -0.0015950817614793777, 0.0241351667791605, 0.021988006308674812, 0.008113003335893154, 0.004413229413330555, 0.006760836578905582, -0.008378000929951668, 0.004267140757292509, 0.009601066820323467, -0.005418861284852028, 0.00696468073874712, 0.0103756757453084, -0.0051572611555457115, 0.01076297927647829, 0.026363864541053772, -0.010484392754733562, -0.003108625765889883, -0.015315502882003784, -0.042209360748529434, 0.0017802403308451176, -0.022776205092668533, 0.015628064051270485, -0.002755295718088746, -0.008357617072761059, 0.0018345988355576992, 0.009206968359649181, 0.01827803999185562, 0.025208747014403343, 0.0037541326601058245, 0.034762248396873474, -0.007521855179220438, -0.016783181577920914, 0.019229313358664513, 0.01604934222996235, -0.03169099614024162, -0.0015279829967767, -0.026988986879587173, 0.003368527162820101, 0.00891479104757309, 0.014540893957018852, 0.021988006308674812, 0.03092997707426548, 5.2288189181126654e-05, 0.00938363280147314, 0.02529028430581093, -0.009730168618261814, -0.025045670568943024, 0.013195522129535675, -0.007168524898588657, -0.011388102546334267, -0.0216890349984169, -0.023768246173858643, -0.00505873654037714, -0.009057482704520226, -0.01633472368121147, -0.018590601161122322, -0.007025834172964096, -0.014065257273614407, -0.0044539980590343475, -0.005751807242631912, 0.013881797902286053, 0.025127209722995758, 0.009016713127493858, 0.0017700481694191694, 0.012937319464981556, 0.00962145160883665, -0.001575546688400209, -0.007827621884644032, -0.014391408301889896, -0.0005032406188547611, 0.02091442607343197, 0.013372186571359634, -0.01713651232421398, -0.0026584696024656296, 0.01458166353404522, 0.021811341866850853, -0.04191039130091667, -0.06566505134105682, 0.016633694991469383, 0.016891898587346077, -0.002751898253336549, -0.0317181758582592, -0.014337049797177315, -0.029571015387773514, 0.02560284547507763, -0.005181042943149805, -0.007820826955139637, 0.015166017226874828, 0.01604934222996235, -0.0016553857130929828, -0.015587295405566692, 0.014717559330165386, 0.014867044985294342, 0.001951809274032712, 0.009431197308003902, 0.01263834722340107, -0.023700298741459846, 0.004355473443865776, 0.009594271890819073, -0.010912465862929821, 0.023129533976316452, -0.01653856784105301, 0.014731149189174175, 0.023129533976316452, 0.010314522311091423, -0.00881286896765232, 0.0032581116538494825, -0.019188543781638145, 0.031989969313144684, -0.030332034453749657, -0.006098342128098011, 0.006618145387619734, -0.003951182123273611, 0.01043003425002098, -0.031174590811133385, 0.00757621368393302, 0.011890918016433716, -0.020941605791449547, -0.008459539152681828, 0.01667446456849575, 0.0003887905622832477, 0.0063871219754219055, 0.017557790502905846, 0.009410812519490719, 0.0012706295819953084, 0.006417698226869106, 0.006448274943977594, -0.008772100321948528, -0.025127209722995758, 0.008609024807810783, -0.00606776587665081, -0.0028691086918115616, 0.0009419305715709925, 0.015356271527707577, -0.02606489323079586, 0.017584970220923424, 0.013345007784664631, -0.0119113028049469, 0.017353946343064308, -0.007970312610268593, 0.003856054972857237, -0.021933648735284805, 0.007365574594587088, 0.019555464386940002, -0.02121339738368988, 0.019039059057831764, -0.02249082177877426, -0.02526310458779335, -0.008479923009872437, 0.008907996118068695, 0.019732128828763962, -0.0016248089959844947, 0.00889440719038248, 0.013195522129535675, -0.002704334445297718, -0.011422076262533665, -0.018264450132846832, -0.015057300217449665, 0.028782816603779793, 0.004481177311390638, 0.009193378500640392, 0.015166017226874828, 0.0036793898325413465, 0.011687073856592178, -0.01417397428303957, 0.0384858064353466, 0.01515242736786604, -0.01929726079106331, -0.03826837241649628, 0.009872859343886375, 0.012896549887955189, 0.003409296041354537, -0.022912099957466125, -0.010076703503727913, 0.00022762615117244422, -0.01732676662504673, -0.0034959299955517054, 0.003339649410918355, 0.0034789429046213627, -0.005228606518357992, 0.025643615052103996, 0.0058061652816832066, -0.0033787195570766926, -0.019025469198822975, -0.012108352035284042, -0.019664181396365166, -0.008065439760684967, -0.03492532670497894, 0.0178024023771286, -0.002709430642426014, 0.0265812985599041, -0.0039274003356695175, -0.019881615415215492, -0.00817415677011013, -0.023455685004591942, -0.03826837241649628, -0.038920674473047256, -0.03549608960747719, 0.00979132205247879, 0.03606685250997543, 0.01621241681277752, 0.011279385536909103, 0.02253159135580063, -0.003365129930898547, 0.011204642243683338, -0.013548851944506168, -0.017204459756612778, 0.002882698317989707, -0.028456665575504303, 0.00851389765739441, -0.008445949293673038, -0.031826891005039215, 0.0094651710242033, 0.017421893775463104, -0.009009918197989464, -0.02318389341235161, 0.01990879513323307, 0.009818500839173794, 0.021281346678733826, 0.004464190453290939, -0.010232984088361263, -0.00025607942370697856, 0.01763932779431343, 0.00858184602111578, -0.021104680374264717, 0.0020639237482100725, 0.005857126787304878, -0.004854891914874315, 0.0057891784235835075, -0.01318872720003128, -0.012998471967875957, 0.02251800149679184, 0.009437991306185722, 0.0005070627084933221, -0.011952071450650692, 0.004413229413330555, 0.004487972240895033, 0.03856734558939934, 0.0005083367577753961, -0.007610187865793705, 0.024189524352550507, 0.028755636885762215, -0.015587295405566692, -0.012991677969694138, 0.03919246792793274, 0.015478578396141529, -0.006648722104728222, 0.029571015387773514, -0.033104315400123596, 0.004899058490991592, -0.018495474010705948, 0.007324805483222008, -0.01715010218322277, 0.003225836204364896, -0.012645142152905464, -0.02265389822423458, -0.027967439964413643, -0.015424219891428947, 0.014391408301889896, -0.017775224521756172, 0.015424219891428947, -0.01384782325476408, 0.021308526396751404, -0.002094500232487917, -0.018740087747573853, 3.869857027893886e-05, -0.02818487398326397, 0.002220204332843423, 0.013215905986726284, -0.014867044985294342, -0.026010533794760704, 0.025983355939388275, 0.004606881644576788, -0.008683768101036549, 0.009023508056998253, 0.23461121320724487, -0.009804910980165005, -0.004267140757292509, 0.011768612079322338, -0.013297444209456444, 0.002604111097753048, 0.010830927640199661, 0.009736963547766209, -0.007188909221440554, -0.004970403853803873, 0.006832181941717863, 0.01734035648405552, -0.03011460043489933, -0.008520692586898804, 0.023279020562767982, -0.019990332424640656, -0.03337610885500908, -0.03688222914934158, -0.022409284487366676, -0.003750735428184271, 0.0044539980590343475, -0.0020078665111213923, -0.009274915792047977, -0.021756982430815697, 0.010830927640199661, 0.0004193671920802444, -0.024705931544303894, 0.0030168958473950624, 0.006322571076452732, 0.005065531004220247, -0.019704950973391533, -0.012373349629342556, 0.016742412000894547, 0.016008572652935982, -0.0005724627990275621, -0.011462844908237457, 0.010790158994495869, 0.014975761994719505, 0.022450054064393044, 0.002656770870089531, 0.01417397428303957, 0.041883211582899094, 0.020044689998030663, -0.007365574594587088, 0.00801787618547678, 0.01213553175330162, -0.0042093852534890175, 0.0033549375366419554, -0.02640463411808014, 0.010287342593073845, -0.01944674737751484, -0.005398476962000132, 0.011265795677900314, 0.015736781060695648, -0.01570960134267807, 0.010396059602499008, -0.015179606154561043, 0.01369154267013073, -0.022286977618932724, 0.021471600979566574, -0.010436829179525375, 0.010334907099604607, 0.020180586725473404, 0.020479558035731316, -0.028402308002114296, 0.010063114576041698, -0.013236290775239468, 0.01075618527829647, 0.006713272538036108, -0.00631237868219614, -0.010348496027290821, -0.0241351667791605, -0.006370134651660919, -0.0002084095758618787, -0.020696992054581642, -0.03386533632874489, 0.04506318271160126, 0.027817953377962112, 0.004983993247151375, 0.003334553213790059, 0.005568346939980984, -0.002130173146724701, 0.042861662805080414, -0.009043892845511436, -0.02739667519927025, -0.02493695355951786, 0.030658185482025146, -0.0003996197774540633, -0.005357707850635052, -0.00932248029857874, -0.004654445219784975, -0.0031901635229587555, -0.012006429955363274, -0.0031409012153744698, -0.0035366988740861416, 0.0012587386881932616, 0.003203753149136901, 0.005364502780139446, 0.014146795496344566, 0.017122922465205193, -0.009913627989590168, 0.013046035543084145, 0.04870520159602165, 0.019460337236523628, -0.02283056266605854, -0.013725517317652702, -0.011123104952275753, 0.02621437795460224, -0.018019836395978928, -0.0098117059096694, -0.03709966316819191, -0.004831110127270222, 0.018033426254987717, 0.020629044622182846, -0.0014192659873515368, 0.011394897475838661, -0.02009904943406582, -0.029598195105791092, 0.016144469380378723, -0.013311034068465233, 0.001217120443470776, -0.008935175836086273, -0.02560284547507763, 0.017109332606196404, -0.0040157330222427845, -0.033946871757507324, -0.0168647188693285, -0.010341701097786427, -0.021172629669308662, 0.002298344625160098, 0.025480538606643677, 0.011530793271958828, 0.014078847132623196, -0.02122698724269867, 0.002755295718088746, -0.016429850831627846, 0.024678751826286316, -0.005486809182912111, 0.01513883750885725, 0.02167544513940811, -0.025317464023828506, 0.001798926037736237, 0.005004378035664558, -0.004097270779311657, 0.02103673294186592, -0.03253355249762535, -0.003930797800421715, 0.0023747861851006746, -0.015546525828540325, -0.01863137073814869, -0.027817953377962112, 0.019161365926265717, -0.012889754958450794, 0.011530793271958828, 0.04498164355754852, 0.003208849113434553, -0.051586199551820755, 0.002772282576188445, -0.006590966135263443, 0.007039423566311598, -0.026676425710320473, -0.0022320952266454697, 0.025059260427951813, -0.01296449825167656, -0.01683754101395607, -0.013480903580784798, -0.17383843660354614, 0.03345764800906181, 0.016973435878753662, -0.034707892686128616, 0.011163873597979546, -0.019840845838189125, 0.0017802403308451176, -0.00029684827313758433, -8.955347584560513e-05, -0.008140183053910732, 0.01391577161848545, 0.008282873779535294, -0.01636190339922905, -0.008194541558623314, 0.028891533613204956, 0.02395850233733654, -9.921484888764098e-05, 0.012978088110685349, 0.019365210086107254, 0.01448653545230627, 0.011068746447563171, -0.01180938072502613, 0.01815573312342167, -0.006842373870313168, 0.00889440719038248, 0.012726680375635624, -0.006991859991103411, -0.003971566911786795, 0.0013258373364806175, -0.015274734236299992, -0.013168342411518097, -0.02560284547507763, 0.02962537296116352, 0.012189890258014202, 0.052564654499292374, 0.006472056731581688, 0.005449438001960516, -0.009288505651056767, -0.0008238707669079304, 0.042861662805080414, 0.019963152706623077, 0.01732676662504673, 0.0186177808791399, 0.013589620590209961, -0.009077866561710835, -0.0014107725583016872, 0.021743392571806908, -0.022382104769349098, -0.024705931544303894, -0.010443623177707195, 0.01286257617175579, -0.026160020381212234, 0.017381124198436737, -0.005211619660258293, -0.009743758477270603, 0.019052648916840553, -0.01956905424594879, 0.007508265320211649, -0.00044251204235479236, -0.015410630032420158, 0.005228606518357992, -0.015478578396141529, 0.013147958554327488, -0.00031532166758552194, -0.001946713193319738, -0.00994760263711214, -0.01894393190741539, 0.0247602891176939, -0.015247554518282413, 0.026853090152144432, -0.008201336488127708, 0.01956905424594879, -0.0005151315708644688, -0.015410630032420158, 0.012543220072984695, -0.0038696445990353823, -0.018509063869714737, -0.007698520086705685, 0.01990879513323307, -0.004851494450122118, 0.00891479104757309, 0.011510408483445644, -0.027179241180419922, 0.014608842320740223, 0.011904507875442505, 0.010871696285903454, 0.007053013425320387, -0.0014048271114006639, -0.03818683326244354, -0.012128736823797226, 0.017883941531181335, -0.009084661491215229, -0.0027892696671187878, 0.0007877733442001045, 0.007046218495815992, 0.01649780012667179, 0.014296281151473522, 1.5474119209102355e-05, -0.0005045146681368351, -0.03367508202791214, 0.015030120499432087, 0.002136967843398452, -0.010715415701270103, -0.01878085546195507, 0.011748227290809155, 0.0019110403954982758, -0.003873041830956936, -0.0056838588789105415, 0.01059990469366312, -0.04367704316973686, -0.001149172312580049, 0.0014566375175490975, 0.024529265239834785, 0.008765305392444134, -0.019800078123807907, 0.0020214561372995377, -0.01027375366538763, -0.04147552326321602, 0.010110678151249886, 0.004073488991707563, 0.04617753252387047, 0.00019885438086930662, -0.010790158994495869, 0.00238837581127882, 0.010633878409862518, -0.00129695946816355, -0.10159600526094437, -0.007793647702783346, -0.0183052197098732, 0.05161337926983833, -0.013718722388148308, 0.0031069270335137844, -0.011856944300234318, 0.040578607469797134, -0.030549468472599983, 0.02427106350660324, 0.016076521947979927, -0.026839500293135643, -0.021756982430815697, 0.019188543781638145, -0.007385958917438984, -0.017218049615621567, -0.01666087470948696, -0.015369861386716366, 0.0002894164645113051, 2.9113507480360568e-06, -0.008642998524010181, -0.015505757182836533, 0.019365210086107254, -0.013141163624823093, 0.0008901201654225588, 0.0038798367604613304, -0.03204432502388954, 0.023849785327911377, 0.030386392027139664, 0.013582825660705566, -0.0011839957442134619, -0.023265430703759193, 0.02848384529352188, -0.0362299308180809, -0.012475271709263325, 0.002792667131870985, 0.019718538969755173, -0.01515242736786604, 0.019215723499655724, -0.03870324045419693, -0.005228606518357992, 0.002925165928900242, -0.0016324531752616167, 0.013127573765814304, -0.030712543055415154, 0.005150466226041317, 0.005170850548893213, 0.03324021399021149, -0.007481086067855358, -0.011388102546334267, -0.04576984420418739, -0.02785872295498848, -0.016389083117246628, -0.00683557940647006, 0.036691974848508835, -0.0010727307526394725, 0.025385411456227303, 0.02124057710170746, 0.0021063911262899637, -0.006652119569480419, -0.014187564142048359, -0.005085915792733431, -0.004899058490991592, 0.012352965772151947, 0.009995166212320328, -0.004324896726757288, -0.01424192264676094, -0.006030394230037928, 0.00865658838301897, 0.0011755021987482905, 0.008405180647969246, 0.0021913263481110334, -0.017204459756612778, 0.014540893957018852, -0.015804728493094444, 0.001477871323004365, -0.006821989547461271, -0.030495109036564827, 0.016796771436929703, 0.000821747409645468, -0.02447490766644478, -0.009220557287335396, 0.005119889508932829, 0.020194176584482193, -0.020112639293074608, -0.015791138634085655, 0.005218414589762688, 0.003421186935156584, -0.0064210956916213036, -0.025072850286960602, 0.0036386209540069103, -0.009179788641631603, -0.017530610784888268, 0.0009852475486695766, -0.02527669444680214, -0.007467496674507856, -0.007820826955139637, -0.01796547882258892, 0.013066420331597328, 0.010409649461507797, -0.01860419102013111, -0.009458376094698906, -0.05941382050514221, 0.032778166234493256, -0.0013232893543317914, -0.012176300399005413, 0.010083498433232307, -0.03647454082965851, -0.006033791694790125, -0.03256073221564293, 0.007270446978509426, 0.032805345952510834, -0.005908087827265263, 0.02119980938732624, -0.02606489323079586, -0.00046926658251322806, -0.000494322448503226, 0.011048361659049988, 0.0378606840968132, -0.004814123269170523, 0.01053195632994175, -0.010158241726458073, 0.010538751259446144, 0.01879444532096386, 0.0051266844384372234, 0.014690380543470383, 0.0005665172939188778, 0.018169322982430458, -0.03449045866727829, 0.027804363518953323, -0.009166199713945389, 0.010966824367642403, -0.00591488229110837, -0.019147776067256927, 0.012040403671562672, -0.005697448737919331, 0.0016052739229053259, -0.02007186971604824, 0.007773262914270163, 0.04101347550749779, -0.015641653910279274, 0.008092619478702545, -0.02251800149679184, -0.03321303427219391, 0.01588626764714718, -0.0010642372071743011, -0.02621437795460224, -0.021580317988991737, 0.0022269990295171738, 0.018916752189397812, 0.033294569700956345, 0.002751898253336549, 0.02883717603981495, 0.006010009907186031, -0.041393984109163284, -0.033783797174692154, -0.02576592192053795, -0.025195157155394554, 0.03737145662307739, -0.006798207759857178, -0.004967006389051676, -0.012896549887955189, 0.02883717603981495, 0.02463798224925995, 0.02185210958123207, -0.007365574594587088, -0.0063157761469483376, 0.0007143044495023787, -0.014038078486919403, 0.005986228119581938, 0.020846478641033173, -0.01994956284761429, 0.0015177908353507519, -0.002177736721932888, 0.015342681668698788, 0.011530793271958828, -0.0017547598108649254, 0.0065094283781945705, 0.0007130304002203047, 0.01990879513323307, -0.010586314834654331, 0.010063114576041698, 0.005745012313127518, -0.023999270051717758, -0.009669015184044838, 0.017883941531181335, 0.01913418620824814, 0.03609403222799301, -0.00327679724432528, -0.008051849901676178, 0.001575546688400209, -0.010491187684237957, -0.016728824004530907, 0.013582825660705566, 0.0073044211603701115, 0.0010166735155507922, 0.02220544032752514, 0.024040039628744125, -0.016796771436929703, 0.002784173469990492, 0.01894393190741539, 0.0011279385071247816, 0.005204824730753899, -7.315038237720728e-05, 0.006033791694790125, 0.00036585808265954256, -0.004239961504936218, 0.00786159560084343, -0.018549831584095955, -0.020601864904165268, -0.002062225015833974, -0.006332763470709324, 0.028212053701281548, 0.0005886004655621946, 0.01229181233793497, 0.024719519540667534, -0.04468267410993576, 0.027491802349686623, -0.029054610058665276, -0.003529903944581747, -0.04294320195913315, 0.036012496799230576, 0.031473562121391296, -0.0009164500515908003, 0.020330073311924934, -0.008507102727890015, 0.022721845656633377, 0.009186583571135998, -0.00048540427815169096, -0.03304995968937874, -0.00016392480756621808, 0.002294947160407901, 0.0036590055096894503, -0.035360194742679596, -0.014418588019907475, -0.0011355826864019036, -0.019501106813549995, -0.00238837581127882, -0.026526939123868942, 0.02205595374107361, -0.034082770347595215, 0.079743891954422, 0.009696194902062416, -0.00913901999592781, 0.00729083176702261, 0.0023696902208030224, 0.00370317162014544, 0.002656770870089531, 0.005408668890595436, -0.025331053882837296, 0.0016018765745684505, 0.01174143236130476, -0.0026126045268028975, -0.011333744041621685, -0.003597852075472474, -0.0006450823275372386, 0.015831908211112022, 0.010464007966220379, 0.011625920422375202, 0.007807237096130848, -0.011734637431800365, 0.02346927486360073, -0.0021131860557943583, 0.0009767540032044053, -0.003876439295709133, 0.011394897475838661, -0.013807054609060287, 0.0023900745436549187, -0.008880817331373692, -0.010708620771765709, -0.0196234118193388, 0.005130081903189421, 0.0035027246922254562, -0.028755636885762215, -0.02414875663816929, -0.014323459938168526, -0.009254531934857368, 0.01215591561049223, -0.0042943200096488, 0.013127573765814304, 0.016769591718912125, -0.007752878591418266, 0.023211073130369186, -0.015369861386716366, -0.0003964347124565393, 0.029734089970588684, 0.009859269484877586, -0.029842806980013847, -0.0065841712057590485, -0.027627699077129364], '_distance': 0.40315932035446167})]\n", + "\u001b[00m\n", + "\u001b[32;1m\u001b[1;3mThought: \n", + "Based on the observation of the documents retrieved by the News DB Tool, it's clear that each document contains information about different advancements or applications in AI. These documents range from details about NASA's new lunar rover contracts, to Apple's potential venture into home robots, Elon Musk's involvement in AI communication tools, and more. To conduct a comprehensive analysis, I need to synthesize key points from each article to identify the latest trends, breakthrough technologies, and their potential impact on various industries.\n", + "\n", + "Final Answer:\n", + "The latest advancements in AI as of 2024 showcase a dynamic range of applications and developments in various sectors. Here are the key points identified from the recent news articles:\n", + "\n", + "1. **Apple's Home Robot Initiative**:\n", + " - Apple is speculated to be entering the home robot market, leveraging its extensive experience in driving technologies.\n", + " - Despite no official commitment, Apple has allocated significant resources, including top executives from its Home and AI divisions, hinting at a serious exploration of robotics.\n", + " - The potential focus areas include robotic smart screens and mobile robots, indicating a broad vision for home automation and personal assistance technologies.\n", + "\n", + "2. **Elon Musk's AI Communication Tool**:\n", + " - Elon Musk has introduced a new AI communication tool through Nomi AI, enhancing the capabilities of group chats with AI friends.\n", + " - This innovation underscores the increasing sophistication of AI in understanding and participating in human-like conversations, pushing the boundaries of interactive AI technologies.\n", + "\n", + "3. **NASA's Lunar Rover Contracts**:\n", + " - NASA has awarded contracts worth $30 million to Intuitive Machines as part of its initiative to develop lunar rovers, with a potential expenditure of $4.6 billion over 13 years.\n", + " - The contracts involve key industry players such as AVL, Boeing, Michelin, and Northrop Grumman, indicating a collaborative approach towards pioneering space exploration technologies.\n", + " - The lunar rovers are expected to have a 10-year lifespan and the capability to carry astronauts, highlighting significant advancements in durability and functionality for space exploration.\n", + "\n", + "These advancements illustrate the rapid development and diverse application of AI and related technologies across different sectors, from home automation and social interaction to space exploration. The involvement of leading corporations and ambitious projects underscores the significant impact and potential of AI in shaping future technologies and industries.\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n", + "\n", + "\n", + "\u001b[1m> Entering new CrewAgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3m\u001b[0m\u001b[32;1m\u001b[1;3mThought: I now can give a great answer\n", + "Final Answer: \n", + "1. **Apple's Home Robot Initiative**: Apple might soon introduce robots to our homes, focusing on smart screens and mobility for better home automation.\n", + "2. **Elon Musk's AI Communication Tool**: Elon Musk's Nomi AI is making group chats cooler by adding AI that chats just like humans.\n", + "3. **NASA's Lunar Rover Contracts**: NASA's investing $4.6 billion in lunar rovers with a 10-year life span, hinting at long-term plans for space exploration.\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(result)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HB91fa7BXULb", + "outputId": "2b3f3bf6-1a90-4d2c-bc7f-9158b7734628" + }, + "execution_count": 19, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "1. **Apple's Home Robot Initiative**: Apple might soon introduce robots to our homes, focusing on smart screens and mobility for better home automation.\n", + "2. **Elon Musk's AI Communication Tool**: Elon Musk's Nomi AI is making group chats cooler by adding AI that chats just like humans.\n", + "3. **NASA's Lunar Rover Contracts**: NASA's investing $4.6 billion in lunar rovers with a 10-year life span, hinting at long-term plans for space exploration.\n" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/AI-Trends-with-CrewAI/README.md b/examples/AI-Trends-with-CrewAI/README.md new file mode 100644 index 00000000..49bf67b1 --- /dev/null +++ b/examples/AI-Trends-with-CrewAI/README.md @@ -0,0 +1,24 @@ +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/AI-Trends-with-CrewAI/CrewAI_AI_Trends.ipynb) + + + +## AI Trends Searcher using CrewAI Agents +This example is about how to make an AI Trends Searcher using **CrewAI Agents** and their Tasks. But before diving into that, let's first understand what CrewAI is and how we can use it for these applications. + +![alt text](<../../assets/crewai.png>) + +### What is CrewAI? + +CrewAI is an open-source framework that helps different AI agents work together to do tricky stuff. You can give each Agent its tasks and goals, manage what they do, and help them work together by sharing tasks. These are some unique features of CrewAI: + +1. Role-based Agents: Define agents with specific roles, goals, and backgrounds to provide more context for answer generation. +2. Task Management: Use tools to dynamically define tasks and assign them to agents. +3. Inter-agent Delegation: Agents can share tasks to collaborate better. + +#### LLM +This Example can use **OPENAI_GPT4** and **GEMINI_PRO** either of them as LLM. + +#### Embedding Function +This Example uses **OpenEmbedding function** for OpenAI LLM and **LLamaFile Embedding function** for Gemini Pro LLM + +[Read More in Blog](https://blog.lancedb.com/track-ai-trends-crewai-agents-rag/) \ No newline at end of file diff --git a/tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/README.md b/examples/Accelerate-Vector-Search-Applications-Using-OpenVINO/README.md similarity index 95% rename from tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/README.md rename to examples/Accelerate-Vector-Search-Applications-Using-OpenVINO/README.md index a60f368d..6744796d 100644 --- a/tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/README.md +++ b/examples/Accelerate-Vector-Search-Applications-Using-OpenVINO/README.md @@ -14,4 +14,4 @@ Text-to-Image and Image-to-Image Search using CLIP **These Results are on 13th Gen Intel(R) Core(TM) i5–13420H using OpenVINO=2023.2 and NNCF=2.7.0 version.** -[Read More in Blog](https://blog.lancedb.com/accelerate-vector-search-applications-using-openvino-51366eabf866) \ No newline at end of file +[Read More in Blog](https://blog.lancedb.com/accelerate-vector-search-applications-using-openvino-lancedb/) \ No newline at end of file diff --git a/tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/clip_text_image_search.ipynb b/examples/Accelerate-Vector-Search-Applications-Using-OpenVINO/clip_text_image_search.ipynb similarity index 100% rename from tutorials/Accelerate-Vector-Search-Applications-Using-OpenVINO/clip_text_image_search.ipynb rename to examples/Accelerate-Vector-Search-Applications-Using-OpenVINO/clip_text_image_search.ipynb diff --git a/examples/CLI-SDK-Manual-Chatbot-Locally/README.md b/examples/CLI-SDK-Manual-Chatbot-Locally/README.md new file mode 100644 index 00000000..d28e09ce --- /dev/null +++ b/examples/CLI-SDK-Manual-Chatbot-Locally/README.md @@ -0,0 +1,40 @@ +## CLI SDK Manual Chatbot Locally +This application is a CLI chatbot for SDK/Hardware documents that uses the Local RAG model with LLama3 with Ollama, LanceDB, Openhermes Embeddings. + +The chatbot is built using the RAG mode using Phidata Assistant and Knowledge Base. + +![alt text](../../assets/sdk-manual-cli-chatbot.png) + +### Steps to Run the Application + +1. Install Dependencies +``` +pip install -r requirements.txt +``` + +2. Setup Ollama + +- Install Ollama on Linux +``` +curl -fsSL https://ollama.com/install.sh | sh +``` +- Install Ollama on Mac +``` +brew install ollama +``` + +3. Run Llama3 and Openhermes with Ollama +``` +ollama run llama3 +ollama run openhermes +``` + +Now you are ready to run CLI SDK manual Chatbot locally +``` +python3 assistant.py +``` + +*Note: This Chatbot utilizes `data/manual.pdf`. For running it on your document change path of document in `assistant.py`* + + + diff --git a/examples/CLI-SDK-Manual-Chatbot-Locally/assistant.py b/examples/CLI-SDK-Manual-Chatbot-Locally/assistant.py new file mode 100644 index 00000000..26c50bef --- /dev/null +++ b/examples/CLI-SDK-Manual-Chatbot-Locally/assistant.py @@ -0,0 +1,35 @@ +from rich.prompt import Prompt +from phi.assistant import Assistant +from phi.llm.ollama import Ollama +from phi.knowledge.pdf import PDFKnowledgeBase, PDFReader +from phi.vectordb.lancedb import LanceDb +from phi.embedder.ollama import OllamaEmbedder + +# loading document with their openhermes embedding in LanceDB +pdf_knowledge_base = PDFKnowledgeBase( + path="data/manual.pdf", + # Table name: ai.pdf_documents + vector_db=LanceDb( + embedder=OllamaEmbedder(), + table_name="pdf_documents", + uri="/tmp/lancedb", + ), + reader=PDFReader(chunk=True), +) + +# define an assistance with llama3 llm and loaded knowledge base +assistant = Assistant( + llm=Ollama(model="llama3"), + description="You are an Expert in SDK or Hardware Manual assistant. Your task is to understand the user question, and provide an answer using the provided contexts. Every answer you generate should have citations in this pattern 'Answer [position].', for example: 'Earth is round [1][2].,' if it's relevant.Your answers are correct, high-quality, and written by an domain expert. If the provided context does not contain the answer, simply state, 'The provided context does not have the answer.'", + knowledge_base=pdf_knowledge_base, + add_references_to_prompt=True, +) +assistant.knowledge_base.load(recreate=False) + +# start cli chatbot with knowledge base +assistant.print_response("Ask me about something from the knowledge base") +while True: + message = Prompt.ask(f"[bold] :sunglasses: User [/bold]") + if message in ("exit", "bye"): + break + assistant.print_response(message, markdown=True) diff --git a/examples/CLI-SDK-Manual-Chatbot-Locally/data/manual.pdf b/examples/CLI-SDK-Manual-Chatbot-Locally/data/manual.pdf new file mode 100644 index 00000000..2cbbacb3 Binary files /dev/null and b/examples/CLI-SDK-Manual-Chatbot-Locally/data/manual.pdf differ diff --git a/examples/CLI-SDK-Manual-Chatbot-Locally/requirements.txt b/examples/CLI-SDK-Manual-Chatbot-Locally/requirements.txt new file mode 100644 index 00000000..c02357a9 --- /dev/null +++ b/examples/CLI-SDK-Manual-Chatbot-Locally/requirements.txt @@ -0,0 +1,3 @@ +phidata +pypdf +lancedb \ No newline at end of file diff --git a/examples/Inbuilt-Hybrid-Search/Inbuilt_Hybrid_Search_with_LanceDB.ipynb b/examples/Inbuilt-Hybrid-Search/Inbuilt_Hybrid_Search_with_LanceDB.ipynb new file mode 100644 index 00000000..99fbfc6b --- /dev/null +++ b/examples/Inbuilt-Hybrid-Search/Inbuilt_Hybrid_Search_with_LanceDB.ipynb @@ -0,0 +1,1969 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5LCzoheJKW8X", + "outputId": "6fbcc152-35aa-4dbc-90da-35e780102587" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m536.7/536.7 kB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m226.7/226.7 kB\u001b[0m \u001b[31m22.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m113.0/113.0 kB\u001b[0m \u001b[31m15.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.2/4.2 MB\u001b[0m \u001b[31m26.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m17.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m20.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.9/75.9 kB\u001b[0m \u001b[31m9.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.6/21.6 MB\u001b[0m \u001b[31m36.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m280.0/280.0 kB\u001b[0m \u001b[31m30.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m132.8/132.8 kB\u001b[0m \u001b[31m568.9 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.8/77.8 kB\u001b[0m \u001b[31m10.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.7/98.7 kB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Building wheel for FlagEmbedding (setup.py) ... \u001b[?25l\u001b[?25hdone\n" + ] + } + ], + "source": [ + "!pip install -U transformers datasets openai lancedb FlagEmbedding \"tantivy>=0.20.1\" -qq\n", + "\n", + "# NOTE: If there is an import error, restart and run the notebook again" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "vP6d6JUShgqo" + }, + "outputs": [], + "source": [ + "import os\n", + "import lancedb\n", + "import re\n", + "import pandas as pd\n", + "import random\n", + "\n", + "from datasets import load_dataset\n", + "\n", + "import torch\n", + "import gc\n", + "\n", + "import lance\n", + "\n", + "\n", + "import os\n", + "\n", + "import lancedb\n", + "import openai\n", + "from lancedb.embeddings import get_registry\n", + "from lancedb.pydantic import LanceModel, Vector\n", + "\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-......\"\n", + "\n", + "\n", + "embeddings = get_registry().get(\"openai\").create()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8eKRYd2F7v5n" + }, + "source": [ + "# Load `Chunks` of data from [BeIR Dataset](https://huggingface.co/datasets/BeIR/scidocs)\n", + "\n", + "Note: This is a dataset built specially for retrieval tasks to see how good your search is working" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 313 + }, + "id": "l0ezDr7suAf_", + "outputId": "0424f34c-f5de-43af-88a9-148ce5d7cf45" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":5: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " docs[\"num_words\"] = docs[\"text\"].apply(lambda x: len(x.split())) # Insert some Metadata for a more \"HYBRID\" search\n" + ] + }, + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \"docs\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"_id\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"9d1940f843c448cc378214ff6bad3c1279b1911a\",\n \"8e508720cdb495b7821bf6e43c740eeb5f3a444a\",\n \"4b53f660eb6cfe9180f9e609ad94df8606724a3d\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Shape-aware Instance Segmentation\",\n \"Learning Scalable Deep Kernels with Recurrent\\nStructure\",\n \"Text mining of news-headlines for FOREX market prediction: A Multi-layer Dimension Reduction Algorithm with semantics and sentiment\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"We address the problem of instance-level semantic segmentation, which aims at jointly detecting, segmenting and classifying every individual object in an image. In this context, existing methods typically propose candidate objects, usually as bounding boxes, and directly predict a binary mask within each such proposal. As a consequence, they cannot recover from errors in the object candidate generation process, such as too small or shifted boxes. In this paper, we introduce a novel object segment representation based on the distance transform of the object masks. We then design an object mask network (OMN) with a new residual-deconvolution architecture that infers such a representation and decodes it into the final binary object mask. This allows us to predict masks that go beyond the scope of the bounding boxes and are thus robust to inaccurate object candidates. We integrate our OMN into a Multitask Network Cascade framework, and learn the resulting shape-aware instance segmentation (SAIS) network in an end-to-end manner. Our experiments on the PASCAL VOC 2012 and the CityScapes datasets demonstrate the benefits of our approach, which outperforms the state-of-the-art in both object proposal generation and instance segmentation.\",\n \"Many applications in speech, robotics, finance, and biology deal with sequential data, where ordering matters and recurrent structures are common. However, this structure cannot be easily captured by standard kernel functions. To model such structure, we propose expressive closed-form kernel functions for Gaussian processes. The resulting model, GP-LSTM, fully encapsulates the inductive biases of long short-term memory (LSTM) recurrent networks, while retaining the non-parametric probabilistic advantages of Gaussian processes. We learn the properties of the proposed kernels by optimizing the Gaussian process marginal likelihood using a new provably convergent semi-stochastic gradient procedure, and exploit the structure of these kernels for scalable training and prediction. This approach provides a practical representation for Bayesian LSTMs. We demonstrate state-of-the-art performance on several benchmarks, and thoroughly investigate a consequential autonomous driving application, where the predictive uncertainties provided by GP-LSTM are uniquely valuable.\",\n \"In this paper a novel approach is proposed to predict intraday directional-movements of a currency-pair in the foreign exchange market based on the text of breaking financial news-headlines. The motivation behind this work is twofold: First, although market-prediction through text-mining is shown to be a promising area of work in the literature, the text-mining approaches utilized in it at this stage are not much beyond basic ones as it is still an emerging field. This work is an effort to put more emphasis on the text-mining methods and tackle some specific aspects thereof that are weak in previous works, namely: the problem of high dimensionality as well as the problem of ignoring sentiment and semantics in dealing with textual language. This research assumes that addressing these aspects of text-mining have an impact on the quality of the achieved results. The proposed system proves this assumption to be right. The second part of the motivation is to research a specific market, namely, the foreign exchange market, which seems not to have been researched in the previous works based on predictive text-mining. Therefore, results of this work also successfully demonstrate a predictive relationship between this specific market-type and the textual data of news. Besides the above two main components of the motivation, there are other specific aspects that make the setup of the proposed system and the conducted experiment unique, for example, the use of news article-headlines only and not news article-bodies, which enables usage of short pieces of text rather than long ones; or the use of general financial breaking news without any further filtration. In order to accomplish the above, this work produces a multi-layer algorithm that tackles each of the mentioned aspects of the text-mining problem at a designated layer. The first layer is termed the Semantic Abstraction Layer and addresses the problem of co-reference in text mining that is contributing to sparsity. Co-reference occurs when two or more words in a text corpus refer to the same concept. This work produces a custom approach by the name of Heuristic-Hypernyms Feature-Selection which creates a way to recognize words with the same parent-word to be regarded as one entity. As a result, prediction accuracy increases significantly at this layer which is attributed to appropriate noise-reduction from the feature-space. The second layer is termed Sentiment Integration Layer, which integrates sentiment analysis capability into the algorithm by proposing a sentiment weight by the name of SumScore that reflects investors\\u2019 sentiment. Additionally, this layer reduces the dimensions by eliminating those that are of zero value in terms of sentiment and thereby improves prediction accuracy. The third layer encompasses a dynamic model creation algorithm, termed Synchronous Targeted Feature Reduction (STFR). It is suitable for the challenge at hand whereby the mining of a stream of text is concerned. It updates the models with the most recent information available and, more importantly, it ensures that the dimensions are reduced to the absolute minimum. The algorithm and each of its layers are extensively evaluated using real market data and news content across multiple years and have proven to be solid and superior to any other comparable solution. The proposed techniques implemented in the system, result in significantly high directional-accuracies of up to 83.33%. On top of a well-rounded multifaceted algorithm, this work contributes a much needed research framework for this context with a test-bed of data that must make future research endeavors more convenient. The produced algorithm is scalable and its modular design allows improvement in each of its layers in future research. This paper provides ample details to reproduce the entire system and the conducted experiments. 2014 Elsevier Ltd. All rights reserved. A. Khadjeh Nassirtoussi et al. / Expert Systems with Applications 42 (2015) 306\\u2013324 307\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"num_words\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 193,\n \"min\": 138,\n \"max\": 621,\n \"num_unique_values\": 5,\n \"samples\": [\n 187,\n 138,\n 621\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe" + }, + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
_idtitletextnum_words
359ea16bc34448ca9d713f4501f1a6215a26746372A survey of software testing practices in albertaSoftware organizations have typically de-empha...236
429d1940f843c448cc378214ff6bad3c1279b1911aShape-aware Instance SegmentationWe address the problem of instance-level seman...187
314b53f660eb6cfe9180f9e609ad94df8606724a3dText mining of news-headlines for FOREX market...In this paper a novel approach is proposed to ...621
21b579366db457216b0548220bf369ab9eb183a0ccAn analysis on the significance of ticket anal...Software even though intangible should undergo...232
298e508720cdb495b7821bf6e43c740eeb5f3a444aLearning Scalable Deep Kernels with Recurrent\\...Many applications in speech, robotics, finance...138
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " _id \\\n", + "35 9ea16bc34448ca9d713f4501f1a6215a26746372 \n", + "42 9d1940f843c448cc378214ff6bad3c1279b1911a \n", + "31 4b53f660eb6cfe9180f9e609ad94df8606724a3d \n", + "21 b579366db457216b0548220bf369ab9eb183a0cc \n", + "29 8e508720cdb495b7821bf6e43c740eeb5f3a444a \n", + "\n", + " title \\\n", + "35 A survey of software testing practices in alberta \n", + "42 Shape-aware Instance Segmentation \n", + "31 Text mining of news-headlines for FOREX market... \n", + "21 An analysis on the significance of ticket anal... \n", + "29 Learning Scalable Deep Kernels with Recurrent\\... \n", + "\n", + " text num_words \n", + "35 Software organizations have typically de-empha... 236 \n", + "42 We address the problem of instance-level seman... 187 \n", + "31 In this paper a novel approach is proposed to ... 621 \n", + "21 Software even though intangible should undergo... 232 \n", + "29 Many applications in speech, robotics, finance... 138 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "queries = load_dataset(\"BeIR/scidocs\", \"queries\")[\"queries\"].to_pandas()\n", + "full_docs = (\n", + " load_dataset(\"BeIR/scidocs\", \"corpus\")[\"corpus\"].to_pandas().dropna(subset=\"text\")\n", + ")\n", + "\n", + "docs = full_docs.head(64) # just random samples for faster embed demo\n", + "docs[\"num_words\"] = docs[\"text\"].apply(\n", + " lambda x: len(x.split())\n", + ") # Insert some Metadata for a more \"HYBRID\" search\n", + "docs.sample(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HJf8xZmX8VJC" + }, + "source": [ + "# Build New Table" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GkhFiOZAwVWw" + }, + "outputs": [], + "source": [ + "!rm -rf ./db" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5aljyqpUiViE" + }, + "outputs": [], + "source": [ + "class Documents(LanceModel):\n", + " vector: Vector(embeddings.ndims()) = embeddings.VectorField()\n", + " text: str = embeddings.SourceField()\n", + " title: str\n", + " num_words: int\n", + "\n", + "\n", + "data = docs.apply(\n", + " lambda row: {\n", + " \"title\": row[\"title\"],\n", + " \"text\": row[\"text\"],\n", + " \"num_words\": row[\"num_words\"],\n", + " },\n", + " axis=1,\n", + ").values.tolist()\n", + "\n", + "db = lancedb.connect(\"./db\")\n", + "table = db.create_table(\"documents\", schema=Documents)\n", + "\n", + "table.add(data) # ingest docs with auto-vectorization\n", + "table.create_fts_index(\"text\") # Create a fts index before the hybrid search" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "OS-soek-yYm4", + "outputId": "9c66ba15-11a8-44e4-eacb-1a2a57fc72f6" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \" query_type=\\\"fts\\\")\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"vector\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Hierarchical Pitman-Yor Process priors are compelling methods for learning language models, outperforming point-estimate based methods. However, these models remain unpopular due to computational and statistical inference issues, such as memory and time usage, as well as poor mixing of sampler. In this work we propose a novel framework which represents the HPYP model compactly using compressed suffix trees. Then, we develop an efficient approximate inference scheme in this framework that has a much lower memory footprint compared to full HPYP and is fast in the inference time. The experimental results illustrate that our model can be built on significantly larger datasets compared to previous HPYP models, while being several orders of magnitudes smaller, fast for training and inference, and outperforming the perplexity of the state-of-the-art Modified Kneser-Ney countbased LM smoothing by up to 15%.\",\n \"Software organizations have typically de-emphasized the importance of software testing. In this paper, the results of a regional survey of software testing and software quality assurance techniques are described. Researchers conducted the study during the summer and fall of 2002 by surveying software organizations in the Province of Alberta. Results indicate that Alberta-based organizations tend to test less than their counterparts in the United States. The results also indicate that Alberta software organizations tend to train fewer personnel on testing-related topics. This practice has the potential for a two-fold impact: first, the ability to detect trends that lead to reduced quality and to identify the root causes of reductions in product quality may suffer from the lack of testing. This consequence is serious enough to warrant consideration, since overall quality may suffer from the reduced ability to detect and eliminate process or product defects. Second, the organization may have a more difficult time adopting methodologies such as extreme programming. This is significant because other industry studies have concluded that many software organizations have tried or will in the next few years try some form of agile method. Newer approaches to software development like extreme programming increase the extent to which teams rely on testing skills. Organizations should consider their testing skill level as a key indication of their readiness for adopting software development techniques such as test-driven development, extreme programming, agile modelling, or other agile methods.\",\n \"We introduce a long short-term memory recurrent neural network (LSTM-RNN) approach for real-time facial animation, which automatically estimates head rotation and facial action unit activations of a speaker from just her speech. Specifically, the time-varying contextual non-linear mapping between audio stream and visual facial movements is realized by training a LSTM neural network on a large audio-visual data corpus. In this work, we extract a set of acoustic features from input audio, including Mel-scaled spectrogram, Mel frequency cepstral coefficients and chromagram that can effectively represent both contextual progression and emotional intensity of the speech. Output facial movements are characterized by 3D rotation and blending expression weights of a blendshape model, which can be used directly for animation. Thus, even though our model does not explicitly predict the affective states of the target speaker, her emotional manifestation is recreated via expression weights of the face model. Experiments on an evaluation dataset of different speakers across a wide range of affective states demonstrate promising results of our approach in real-time speech-driven facial animation.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Compressed Nonparametric Language Modelling\",\n \"A survey of software testing practices in alberta\",\n \"Speech-driven 3 D Facial Animation with Implicit Emotional Awareness : A Deep Learning Approach\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"num_words\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 51,\n \"min\": 112,\n \"max\": 236,\n \"num_unique_values\": 5,\n \"samples\": [\n 134,\n 236,\n 171\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"score\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.3946595562275909,\n \"min\": 6.037307262420654,\n \"max\": 6.8111042976379395,\n \"num_unique_values\": 5,\n \"samples\": [\n 6.782823085784912,\n 6.037307262420654,\n 6.157275199890137\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe" + }, + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
vectortexttitlenum_wordsscore
0[-0.0123116635, -0.003029472, 0.022851666, -0....Sociological and technical difficulties, such ...Hipikat: a project memory for software develop...2106.811104
1[-0.013957698, 0.02428029, 0.0018158188, -0.03...Hierarchical Pitman-Yor Process priors are com...Compressed Nonparametric Language Modelling1346.782823
2[-0.035857946, -0.00020074612, 0.009314451, -0...We introduce a long short-term memory recurren...Speech-driven 3 D Facial Animation with Implic...1716.157275
3[-0.03081366, -0.0026948636, 0.010220175, -0.0...This report summarizes the objectives and eval...SemEval-2015 Task 11: Sentiment Analysis of Fi...1126.050443
4[0.0012136719, -0.022606706, 0.0142465895, -0....Software organizations have typically de-empha...A survey of software testing practices in alberta2366.037307
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " vector \\\n", + "0 [-0.0123116635, -0.003029472, 0.022851666, -0.... \n", + "1 [-0.013957698, 0.02428029, 0.0018158188, -0.03... \n", + "2 [-0.035857946, -0.00020074612, 0.009314451, -0... \n", + "3 [-0.03081366, -0.0026948636, 0.010220175, -0.0... \n", + "4 [0.0012136719, -0.022606706, 0.0142465895, -0.... \n", + "\n", + " text \\\n", + "0 Sociological and technical difficulties, such ... \n", + "1 Hierarchical Pitman-Yor Process priors are com... \n", + "2 We introduce a long short-term memory recurren... \n", + "3 This report summarizes the objectives and eval... \n", + "4 Software organizations have typically de-empha... \n", + "\n", + " title num_words score \n", + "0 Hipikat: a project memory for software develop... 210 6.811104 \n", + "1 Compressed Nonparametric Language Modelling 134 6.782823 \n", + "2 Speech-driven 3 D Facial Animation with Implic... 171 6.157275 \n", + "3 SemEval-2015 Task 11: Sentiment Analysis of Fi... 112 6.050443 \n", + "4 A survey of software testing practices in alberta 236 6.037307 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table.search(\n", + " \"To confuse the AI and DNN embedding, let's put random terms from other sentences- automation training test memory?\",\n", + " query_type=\"fts\",\n", + ").limit(5).to_pandas()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "id": "1wo7nfR0yhk7", + "outputId": "7221d414-3151-44bf-8ce0-f21e6ecb331a" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \" to_pandas()\",\n \"rows\": 10,\n \"fields\": [\n {\n \"column\": \"vector\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 10,\n \"samples\": [\n \"With the development of online advertisements, clickbait spread wider and wider. Clickbait dissatisfies users because the article content does not match their expectation. Thus, clickbait detection has attracted more and more attention recently. Traditional clickbait-detection methods rely on heavy feature engineering and fail to distinguish clickbait from normal headlines precisely because of the limited information in headlines. A convolutional neural network is useful for clickbait detection, since it utilizes pretrained Word2Vec to understand the headlines semantically, and employs different kernels to find various characteristics of the headlines. However, different types of articles tend to use different ways to draw users\\u2019 attention, and a pretrained Word2Vec model cannot distinguish these different ways. To address this issue, we propose a clickbait convolutional neural network (CBCNN) to consider not only the overall characteristics but also specific characteristics from different article types. Our experimental results show that our method outperforms traditional clickbait-detection algorithms and the TextCNN model in terms of precision, recall and accuracy.\",\n \"a r t i c l e i n f o a b s t r a c t We present an automatic approach to the construction of BabelNet, a very large, wide-coverage multilingual semantic network. Key to our approach is the integration of lexicographic and encyclopedic knowledge from WordNet and Wikipedia. In addition, Machine Translation is applied to enrich the resource with lexical information for all languages. We first conduct in vitro experiments on new and existing gold-standard datasets to show the high quality and coverage of BabelNet. We then show that our lexical resource can be used successfully to perform both monolingual and cross-lingual Word Sense Disambiguation: thanks to its wide lexical coverage and novel semantic relations, we are able to achieve state-of the-art results on three different SemEval evaluation tasks.\",\n \"This paper proposes quiz-style information presentation for interactive systems as a means to improve user understanding in educational tasks. Since the nature of quizzes can highly motivate users to stay voluntarily engaged in the interaction and keep their attention on receiving information, it is expected that information presented as quizzes can be better understood by users. To verify the effectiveness of the approach, we implemented read-out and quiz systems and performed comparison experiments using human subjects. In the task of memorizing biographical facts, the results showed that user understanding for the quiz system was significantly better than that for the read-out system, and that the subjects were more willing to use the quiz system despite the long duration of the quizzes. This indicates that quiz-style information presentation promotes engagement in the interaction with the system, leading to the improved user understanding.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 10,\n \"samples\": [\n \"Clickbait Convolutional Neural Network\",\n \"BabelNet: The automatic construction, evaluation and application of a wide-coverage multilingual semantic network\",\n \"Effects of quiz-style information presentation on user understanding\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"num_words\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 23,\n \"min\": 112,\n \"max\": 187,\n \"num_unique_values\": 10,\n \"samples\": [\n 160,\n 133,\n 141\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"_distance\",\n \"properties\": {\n \"dtype\": \"float32\",\n \"num_unique_values\": 10,\n \"samples\": [\n 0.4484541118144989,\n 0.40246888995170593,\n 0.44178444147109985\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe" + }, + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
vectortexttitlenum_words_distance
0[-0.029037403, -0.0019001433, 0.01014971, -0.0...Classifying short texts to one category or clu...Using deep learning for short text understanding1870.354801
1[-0.013545574, -0.0019434954, 0.009623939, -0....a r t i c l e i n f o a b s t r a c t We prese...BabelNet: The automatic construction, evaluati...1330.402469
2[-0.027462298, -0.00018946378, 0.017612722, -0...We introduce a technique for augmenting neural...Deep Voice 2 : Multi-Speaker Neural Text-to-Sp...1510.417934
3[-0.035857946, -0.00020074612, 0.009314451, -0...We introduce a long short-term memory recurren...Speech-driven 3 D Facial Animation with Implic...1710.421723
4[-0.010440272, -0.0065525724, 0.018469144, -0....The presented work aims at generating a system...BCSAT : A Benchmark Corpus for Sentiment Analy...1260.430030
5[-0.037621364, 0.011013092, 0.02912708, -0.034...This paper proposes quiz-style information pre...Effects of quiz-style information presentation...1410.441784
6[-0.03081366, -0.0026948636, 0.010220175, -0.0...This report summarizes the objectives and eval...SemEval-2015 Task 11: Sentiment Analysis of Fi...1120.445057
7[-0.009847619, 0.007252175, 0.00984077, -0.031...This paper presents a simple unsupervised lear...Thumbs Up or Thumbs Down? Semantic Orientation...1630.448393
8[-0.02750998, 0.017241215, 0.016468005, -0.014...With the development of online advertisements,...Clickbait Convolutional Neural Network1600.448454
9[-0.016168512, 0.010419708, 0.029975908, -0.01...Theories on the functions of the hippocampal s...Memory, navigation and theta rhythm in the hip...1300.453170
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " vector \\\n", + "0 [-0.029037403, -0.0019001433, 0.01014971, -0.0... \n", + "1 [-0.013545574, -0.0019434954, 0.009623939, -0.... \n", + "2 [-0.027462298, -0.00018946378, 0.017612722, -0... \n", + "3 [-0.035857946, -0.00020074612, 0.009314451, -0... \n", + "4 [-0.010440272, -0.0065525724, 0.018469144, -0.... \n", + "5 [-0.037621364, 0.011013092, 0.02912708, -0.034... \n", + "6 [-0.03081366, -0.0026948636, 0.010220175, -0.0... \n", + "7 [-0.009847619, 0.007252175, 0.00984077, -0.031... \n", + "8 [-0.02750998, 0.017241215, 0.016468005, -0.014... \n", + "9 [-0.016168512, 0.010419708, 0.029975908, -0.01... \n", + "\n", + " text \\\n", + "0 Classifying short texts to one category or clu... \n", + "1 a r t i c l e i n f o a b s t r a c t We prese... \n", + "2 We introduce a technique for augmenting neural... \n", + "3 We introduce a long short-term memory recurren... \n", + "4 The presented work aims at generating a system... \n", + "5 This paper proposes quiz-style information pre... \n", + "6 This report summarizes the objectives and eval... \n", + "7 This paper presents a simple unsupervised lear... \n", + "8 With the development of online advertisements,... \n", + "9 Theories on the functions of the hippocampal s... \n", + "\n", + " title num_words _distance \n", + "0 Using deep learning for short text understanding 187 0.354801 \n", + "1 BabelNet: The automatic construction, evaluati... 133 0.402469 \n", + "2 Deep Voice 2 : Multi-Speaker Neural Text-to-Sp... 151 0.417934 \n", + "3 Speech-driven 3 D Facial Animation with Implic... 171 0.421723 \n", + "4 BCSAT : A Benchmark Corpus for Sentiment Analy... 126 0.430030 \n", + "5 Effects of quiz-style information presentation... 141 0.441784 \n", + "6 SemEval-2015 Task 11: Sentiment Analysis of Fi... 112 0.445057 \n", + "7 Thumbs Up or Thumbs Down? Semantic Orientation... 163 0.448393 \n", + "8 Clickbait Convolutional Neural Network 160 0.448454 \n", + "9 Memory, navigation and theta rhythm in the hip... 130 0.453170 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table.search(\n", + " \"To confuse the AI and DNN embedding, let's put random terms from other sentences- automation training test memory?\",\n", + " query_type=\"vector\",\n", + ").limit(10).to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e_AH1IxlFPn-" + }, + "source": [ + "## Perform inbuilt Hybrid Search\n", + "They have some off the shelf functionalities and a way to implement the custom Re-Ranking and Filtering Function here [Implement Custom Rerankers](https://lancedb.github.io/lancedb/hybrid_search/#building-custom-rerankers)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "Se27vipkFSzf", + "outputId": "4d24e067-39ad-439b-d243-6cb61302412e" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \" to_pandas()\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"vector\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Hierarchical Pitman-Yor Process priors are compelling methods for learning language models, outperforming point-estimate based methods. However, these models remain unpopular due to computational and statistical inference issues, such as memory and time usage, as well as poor mixing of sampler. In this work we propose a novel framework which represents the HPYP model compactly using compressed suffix trees. Then, we develop an efficient approximate inference scheme in this framework that has a much lower memory footprint compared to full HPYP and is fast in the inference time. The experimental results illustrate that our model can be built on significantly larger datasets compared to previous HPYP models, while being several orders of magnitudes smaller, fast for training and inference, and outperforming the perplexity of the state-of-the-art Modified Kneser-Ney countbased LM smoothing by up to 15%.\",\n \"We introduce a technique for augmenting neural text-to-speech (TTS) with lowdimensional trainable speaker embeddings to generate different voices from a single model. As a starting point, we show improvements over the two state-ofthe-art approaches for single-speaker neural TTS: Deep Voice 1 and Tacotron. We introduce Deep Voice 2, which is based on a similar pipeline with Deep Voice 1, but constructed with higher performance building blocks and demonstrates a significant audio quality improvement over Deep Voice 1. We improve Tacotron by introducing a post-processing neural vocoder, and demonstrate a significant audio quality improvement. We then demonstrate our technique for multi-speaker speech synthesis for both Deep Voice 2 and Tacotron on two multi-speaker TTS datasets. We show that a single neural TTS system can learn hundreds of unique voices from less than half an hour of data per speaker, while achieving high audio quality synthesis and preserving the speaker identities almost perfectly.\",\n \"a r t i c l e i n f o a b s t r a c t We present an automatic approach to the construction of BabelNet, a very large, wide-coverage multilingual semantic network. Key to our approach is the integration of lexicographic and encyclopedic knowledge from WordNet and Wikipedia. In addition, Machine Translation is applied to enrich the resource with lexical information for all languages. We first conduct in vitro experiments on new and existing gold-standard datasets to show the high quality and coverage of BabelNet. We then show that our lexical resource can be used successfully to perform both monolingual and cross-lingual Word Sense Disambiguation: thanks to its wide lexical coverage and novel semantic relations, we are able to achieve state-of the-art results on three different SemEval evaluation tasks.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Compressed Nonparametric Language Modelling\",\n \"Deep Voice 2 : Multi-Speaker Neural Text-to-Speech\",\n \"BabelNet: The automatic construction, evaluation and application of a wide-coverage multilingual semantic network\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"num_words\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 23,\n \"min\": 133,\n \"max\": 187,\n \"num_unique_values\": 5,\n \"samples\": [\n 134,\n 151,\n 133\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"_relevance_score\",\n \"properties\": {\n \"dtype\": \"float32\",\n \"num_unique_values\": 5,\n \"samples\": [\n 0.6744159460067749,\n 0.1125519722700119,\n 0.25645574927330017\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe" + }, + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
vectortexttitlenum_words_relevance_score
0[-0.029037403, -0.0019001433, 0.01014971, -0.0...Classifying short texts to one category or clu...Using deep learning for short text understanding1870.700000
1[-0.013957698, 0.02428029, 0.0018158188, -0.03...Hierarchical Pitman-Yor Process priors are com...Compressed Nonparametric Language Modelling1340.674416
2[-0.013545574, -0.0019434954, 0.009623939, -0....a r t i c l e i n f o a b s t r a c t We prese...BabelNet: The automatic construction, evaluati...1330.256456
3[-0.035857946, -0.00020074612, 0.009314451, -0...We introduce a long short-term memory recurren...Speech-driven 3 D Facial Animation with Implic...1710.123807
4[-0.027462298, -0.00018946378, 0.017612722, -0...We introduce a technique for augmenting neural...Deep Voice 2 : Multi-Speaker Neural Text-to-Sp...1510.112552
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " vector \\\n", + "0 [-0.029037403, -0.0019001433, 0.01014971, -0.0... \n", + "1 [-0.013957698, 0.02428029, 0.0018158188, -0.03... \n", + "2 [-0.013545574, -0.0019434954, 0.009623939, -0.... \n", + "3 [-0.035857946, -0.00020074612, 0.009314451, -0... \n", + "4 [-0.027462298, -0.00018946378, 0.017612722, -0... \n", + "\n", + " text \\\n", + "0 Classifying short texts to one category or clu... \n", + "1 Hierarchical Pitman-Yor Process priors are com... \n", + "2 a r t i c l e i n f o a b s t r a c t We prese... \n", + "3 We introduce a long short-term memory recurren... \n", + "4 We introduce a technique for augmenting neural... \n", + "\n", + " title num_words \\\n", + "0 Using deep learning for short text understanding 187 \n", + "1 Compressed Nonparametric Language Modelling 134 \n", + "2 BabelNet: The automatic construction, evaluati... 133 \n", + "3 Speech-driven 3 D Facial Animation with Implic... 171 \n", + "4 Deep Voice 2 : Multi-Speaker Neural Text-to-Sp... 151 \n", + "\n", + " _relevance_score \n", + "0 0.700000 \n", + "1 0.674416 \n", + "2 0.256456 \n", + "3 0.123807 \n", + "4 0.112552 " + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from lancedb.rerankers import LinearCombinationReranker\n", + "\n", + "reranker = LinearCombinationReranker(\n", + " weight=0.7\n", + ") # Weight = 0 Means pure Text Search (BM-25) and 1 means pure Sementic (Vector) Search\n", + "\n", + "table.search(\n", + " \"To confuse the AI and DNN embedding, let's put random terms from other sentences- automation training test memory?\",\n", + " query_type=\"hybrid\",\n", + ").rerank(reranker=reranker).limit(5).to_pandas()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Yw5OecIjE3IB" + }, + "source": [ + "## Build custom Filtering Function\n", + "\n", + "By passing the `pandas.query` style, filtering, we will do the following 2 things:\n", + "\n", + "1. Remove all the rows which contain a specific term, in out case, `\"dual-band\"`\n", + "2. Keep only the rows which have `num_words > 100`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "vfMIXT2vE9yv", + "outputId": "90b28f90-c614-446a-b5b5-b72b32ec0ef5" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \" to_pandas()\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"vector\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"We introduce a long short-term memory recurrent neural network (LSTM-RNN) approach for real-time facial animation, which automatically estimates head rotation and facial action unit activations of a speaker from just her speech. Specifically, the time-varying contextual non-linear mapping between audio stream and visual facial movements is realized by training a LSTM neural network on a large audio-visual data corpus. In this work, we extract a set of acoustic features from input audio, including Mel-scaled spectrogram, Mel frequency cepstral coefficients and chromagram that can effectively represent both contextual progression and emotional intensity of the speech. Output facial movements are characterized by 3D rotation and blending expression weights of a blendshape model, which can be used directly for animation. Thus, even though our model does not explicitly predict the affective states of the target speaker, her emotional manifestation is recreated via expression weights of the face model. Experiments on an evaluation dataset of different speakers across a wide range of affective states demonstrate promising results of our approach in real-time speech-driven facial animation.\",\n \"In this paper a novel approach is proposed to predict intraday directional-movements of a currency-pair in the foreign exchange market based on the text of breaking financial news-headlines. The motivation behind this work is twofold: First, although market-prediction through text-mining is shown to be a promising area of work in the literature, the text-mining approaches utilized in it at this stage are not much beyond basic ones as it is still an emerging field. This work is an effort to put more emphasis on the text-mining methods and tackle some specific aspects thereof that are weak in previous works, namely: the problem of high dimensionality as well as the problem of ignoring sentiment and semantics in dealing with textual language. This research assumes that addressing these aspects of text-mining have an impact on the quality of the achieved results. The proposed system proves this assumption to be right. The second part of the motivation is to research a specific market, namely, the foreign exchange market, which seems not to have been researched in the previous works based on predictive text-mining. Therefore, results of this work also successfully demonstrate a predictive relationship between this specific market-type and the textual data of news. Besides the above two main components of the motivation, there are other specific aspects that make the setup of the proposed system and the conducted experiment unique, for example, the use of news article-headlines only and not news article-bodies, which enables usage of short pieces of text rather than long ones; or the use of general financial breaking news without any further filtration. In order to accomplish the above, this work produces a multi-layer algorithm that tackles each of the mentioned aspects of the text-mining problem at a designated layer. The first layer is termed the Semantic Abstraction Layer and addresses the problem of co-reference in text mining that is contributing to sparsity. Co-reference occurs when two or more words in a text corpus refer to the same concept. This work produces a custom approach by the name of Heuristic-Hypernyms Feature-Selection which creates a way to recognize words with the same parent-word to be regarded as one entity. As a result, prediction accuracy increases significantly at this layer which is attributed to appropriate noise-reduction from the feature-space. The second layer is termed Sentiment Integration Layer, which integrates sentiment analysis capability into the algorithm by proposing a sentiment weight by the name of SumScore that reflects investors\\u2019 sentiment. Additionally, this layer reduces the dimensions by eliminating those that are of zero value in terms of sentiment and thereby improves prediction accuracy. The third layer encompasses a dynamic model creation algorithm, termed Synchronous Targeted Feature Reduction (STFR). It is suitable for the challenge at hand whereby the mining of a stream of text is concerned. It updates the models with the most recent information available and, more importantly, it ensures that the dimensions are reduced to the absolute minimum. The algorithm and each of its layers are extensively evaluated using real market data and news content across multiple years and have proven to be solid and superior to any other comparable solution. The proposed techniques implemented in the system, result in significantly high directional-accuracies of up to 83.33%. On top of a well-rounded multifaceted algorithm, this work contributes a much needed research framework for this context with a test-bed of data that must make future research endeavors more convenient. The produced algorithm is scalable and its modular design allows improvement in each of its layers in future research. This paper provides ample details to reproduce the entire system and the conducted experiments. 2014 Elsevier Ltd. All rights reserved. A. Khadjeh Nassirtoussi et al. / Expert Systems with Applications 42 (2015) 306\\u2013324 307\",\n \"We introduce a technique for augmenting neural text-to-speech (TTS) with lowdimensional trainable speaker embeddings to generate different voices from a single model. As a starting point, we show improvements over the two state-ofthe-art approaches for single-speaker neural TTS: Deep Voice 1 and Tacotron. We introduce Deep Voice 2, which is based on a similar pipeline with Deep Voice 1, but constructed with higher performance building blocks and demonstrates a significant audio quality improvement over Deep Voice 1. We improve Tacotron by introducing a post-processing neural vocoder, and demonstrate a significant audio quality improvement. We then demonstrate our technique for multi-speaker speech synthesis for both Deep Voice 2 and Tacotron on two multi-speaker TTS datasets. We show that a single neural TTS system can learn hundreds of unique voices from less than half an hour of data per speaker, while achieving high audio quality synthesis and preserving the speaker identities almost perfectly.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Speech-driven 3 D Facial Animation with Implicit Emotional Awareness : A Deep Learning Approach\",\n \"Text mining of news-headlines for FOREX market prediction: A Multi-layer Dimension Reduction Algorithm with semantics and sentiment\",\n \"Deep Voice 2 : Multi-Speaker Neural Text-to-Speech\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"num_words\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 196,\n \"min\": 151,\n \"max\": 621,\n \"num_unique_values\": 5,\n \"samples\": [\n 171,\n 621,\n 151\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"_relevance_score\",\n \"properties\": {\n \"dtype\": \"float32\",\n \"num_unique_values\": 5,\n \"samples\": [\n 0.2986561357975006,\n 0.10069400072097778,\n 0.20968052744865417\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe" + }, + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
vectortexttitlenum_words_relevance_score
0[-0.029037403, -0.0019001433, 0.01014971, -0.0...Classifying short texts to one category or clu...Using deep learning for short text understanding1870.700000
3[-0.035857946, -0.00020074612, 0.009314451, -0...We introduce a long short-term memory recurren...Speech-driven 3 D Facial Animation with Implic...1710.298656
4[-0.027462298, -0.00018946378, 0.017612722, -0...We introduce a technique for augmenting neural...Deep Voice 2 : Multi-Speaker Neural Text-to-Sp...1510.209681
5[0.0012136719, -0.022606706, 0.0142465895, -0....Software organizations have typically de-empha...A survey of software testing practices in alberta2360.198860
7[-0.027905056, -4.77228e-05, 0.0129647385, -0....In this paper a novel approach is proposed to ...Text mining of news-headlines for FOREX market...6210.100694
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "text/plain": [ + " vector \\\n", + "0 [-0.029037403, -0.0019001433, 0.01014971, -0.0... \n", + "3 [-0.035857946, -0.00020074612, 0.009314451, -0... \n", + "4 [-0.027462298, -0.00018946378, 0.017612722, -0... \n", + "5 [0.0012136719, -0.022606706, 0.0142465895, -0.... \n", + "7 [-0.027905056, -4.77228e-05, 0.0129647385, -0.... \n", + "\n", + " text \\\n", + "0 Classifying short texts to one category or clu... \n", + "3 We introduce a long short-term memory recurren... \n", + "4 We introduce a technique for augmenting neural... \n", + "5 Software organizations have typically de-empha... \n", + "7 In this paper a novel approach is proposed to ... \n", + "\n", + " title num_words \\\n", + "0 Using deep learning for short text understanding 187 \n", + "3 Speech-driven 3 D Facial Animation with Implic... 171 \n", + "4 Deep Voice 2 : Multi-Speaker Neural Text-to-Sp... 151 \n", + "5 A survey of software testing practices in alberta 236 \n", + "7 Text mining of news-headlines for FOREX market... 621 \n", + "\n", + " _relevance_score \n", + "0 0.700000 \n", + "3 0.298656 \n", + "4 0.209681 \n", + "5 0.198860 \n", + "7 0.100694 " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from typing import List, Union\n", + "import pandas as pd\n", + "import pyarrow as pa\n", + "\n", + "\n", + "class MofidifiedLinearReranker(LinearCombinationReranker):\n", + " def __init__(self, filters: Union[str, List[str]], **kwargs):\n", + " super().__init__(**kwargs)\n", + " filters = filters if isinstance(filters, list) else [filters]\n", + " self.filters = filters\n", + "\n", + " def rerank_hybrid(\n", + " self, query: str, vector_results: pa.Table, fts_results: pa.Table\n", + " ) -> pa.Table:\n", + " combined_result = super().rerank_hybrid(query, vector_results, fts_results)\n", + " df = combined_result.to_pandas()\n", + " for filter in self.filters:\n", + " df = df.query(\n", + " \"(not text.str.contains(@filter)) & (num_words > 150) \"\n", + " ) # THIS is where you implement your filters. You can hard code or pass dynamically too\n", + "\n", + " return pa.Table.from_pandas(df)\n", + "\n", + "\n", + "modified_reranker = MofidifiedLinearReranker(filters=[\"dual-band\"])\n", + "\n", + "table.search(\n", + " \"To confuse the AI and DNN embedding, let's put random terms from other sentences- automation training test memory?\",\n", + " query_type=\"hybrid\",\n", + ").rerank(reranker=modified_reranker).limit(7).to_pandas()" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/QueryExpansion&Reranker/README.md b/examples/QueryExpansion&Reranker/README.md new file mode 100644 index 00000000..b89b35d8 --- /dev/null +++ b/examples/QueryExpansion&Reranker/README.md @@ -0,0 +1,22 @@ +Open In Colab + +## Enhancing RAG with Query Expansion & Reranking Models +![image](../../assets/query-expansion.png) + + +### Overview +This project explores the enhancement of Retrieval-Augmented Generation (RAG) systems through query +expansion and the integration of advanced reranking models such as Cross Encoders, ColBERT v2, and FlashRank. +Our focus is on improving the precision and recall of document retrieval processes, thereby refining the performance of RAG models in handling information retrieval tasks. + +### Key Features +- Query Expansion: Utilizes Large Language Models (LLMs) to generate meaningful expansions of search queries, addressing issues like query ambiguity and improving document matching. +- Reranking Methods: Implements advanced reranking models including Cross-Encoder reranking, ColBERT v2, and FlashRank to refine search results and prioritize relevant documents. + + Open In Colab + +### Blog +For a detailed exploration of the concepts and methodologies discussed in this project, +visit our blog + +[Read the Blog Post](https://blog.lancedb.com/improving-rag-with-query-expansion-reranking-models/) diff --git a/examples/QueryExpansion&Reranker/main.ipynb b/examples/QueryExpansion&Reranker/main.ipynb new file mode 100644 index 00000000..7a010038 --- /dev/null +++ b/examples/QueryExpansion&Reranker/main.ipynb @@ -0,0 +1,5266 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "512a4a1ac0a54087b19b3ab709d408a5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e4fffd410f144690a30509cd6ebfe3d0", + "IPY_MODEL_e1d7a067149048cdb0c96c7b8fc49d3a", + "IPY_MODEL_6cf906c96d934cef8bd3236d011335c3" + ], + "layout": "IPY_MODEL_9ccc93963e214e8ebbcec70fc8380004" + } + }, + "e4fffd410f144690a30509cd6ebfe3d0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5c103a7e49654f9fa544614faa53266d", + "placeholder": "​", + "style": "IPY_MODEL_094b771f8f664daba18dce94377a3b82", + "value": "tokenizer_config.json: 100%" + } + }, + "e1d7a067149048cdb0c96c7b8fc49d3a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8904ec0f7c5e4c84ab091ec0b41c21f7", + "max": 405, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_43340646831643f588fc7242cb77e335", + "value": 405 + } + }, + "6cf906c96d934cef8bd3236d011335c3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9e35f34b4314464b88ae8d056a9ff0c9", + "placeholder": "​", + "style": "IPY_MODEL_ce328d74dd624c86bfb3564ced691433", + "value": " 405/405 [00:00<00:00, 17.7kB/s]" + } + }, + "9ccc93963e214e8ebbcec70fc8380004": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5c103a7e49654f9fa544614faa53266d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "094b771f8f664daba18dce94377a3b82": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8904ec0f7c5e4c84ab091ec0b41c21f7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "43340646831643f588fc7242cb77e335": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9e35f34b4314464b88ae8d056a9ff0c9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ce328d74dd624c86bfb3564ced691433": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f6e58bbf74fa4f72847eefbfdb88f5a5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cb16b243e4ed44cbaa44aae6dff804df", + "IPY_MODEL_3da764b62956470bbe525b0f211d1aba", + "IPY_MODEL_6b6d018ac1464f718de54d590a05d812" + ], + "layout": "IPY_MODEL_44cfb577ac064a5791edb3f985e4319e" + } + }, + "cb16b243e4ed44cbaa44aae6dff804df": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_626fbd41136f4695ad87b950940eee2a", + "placeholder": "​", + "style": "IPY_MODEL_7ee096ddd2e0430a90cd70d9038bbed8", + "value": "vocab.txt: 100%" + } + }, + "3da764b62956470bbe525b0f211d1aba": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ad12c139c01645588babd5847828338f", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f9235562c819445c9dd8dbd470339686", + "value": 231508 + } + }, + "6b6d018ac1464f718de54d590a05d812": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d0c9b80dbda54445a9d11db9d78483b9", + "placeholder": "​", + "style": "IPY_MODEL_24b143e06316458eb749bf5205a6b50b", + "value": " 232k/232k [00:00<00:00, 581kB/s]" + } + }, + "44cfb577ac064a5791edb3f985e4319e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "626fbd41136f4695ad87b950940eee2a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7ee096ddd2e0430a90cd70d9038bbed8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ad12c139c01645588babd5847828338f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f9235562c819445c9dd8dbd470339686": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d0c9b80dbda54445a9d11db9d78483b9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "24b143e06316458eb749bf5205a6b50b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6dbe42d65d32487db6384bad62f61ea0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b09df7fdc4d848c68445f097eabb26ff", + "IPY_MODEL_d71d780bb8fb426998037943f21a57e7", + "IPY_MODEL_d8dea6d0dc4248bc901541fa430aad4f" + ], + "layout": "IPY_MODEL_29a9346c94aa404ea618e57e47109880" + } + }, + "b09df7fdc4d848c68445f097eabb26ff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d66c89fc9dfb4826b3cb4dfda31cf007", + "placeholder": "​", + "style": "IPY_MODEL_eb07c72549434e3bbac0c78daf97341f", + "value": "tokenizer.json: 100%" + } + }, + "d71d780bb8fb426998037943f21a57e7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e8a29343ae5a49d4b71c0cee39903eba", + "max": 466081, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_71457dc5c8ea4b69b0118a3972fc7f5f", + "value": 466081 + } + }, + "d8dea6d0dc4248bc901541fa430aad4f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8aa6071ab59b4e1b867d6538261decc9", + "placeholder": "​", + "style": "IPY_MODEL_34f4a5a1851a4268a0ab749c967066d9", + "value": " 466k/466k [00:00<00:00, 776kB/s]" + } + }, + "29a9346c94aa404ea618e57e47109880": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d66c89fc9dfb4826b3cb4dfda31cf007": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "eb07c72549434e3bbac0c78daf97341f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e8a29343ae5a49d4b71c0cee39903eba": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "71457dc5c8ea4b69b0118a3972fc7f5f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8aa6071ab59b4e1b867d6538261decc9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "34f4a5a1851a4268a0ab749c967066d9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "edc4db29c82744b1929358793c22cecb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_22a7472d547a48d684e208aa80a48daa", + "IPY_MODEL_98185bbf7b794e3189ca9868a0a8c548", + "IPY_MODEL_79ecc557cfba4409876c543ad9fd4d1d" + ], + "layout": "IPY_MODEL_d51840e06afa471ca5d09e63d02d7af5" + } + }, + "22a7472d547a48d684e208aa80a48daa": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5323184c79864acfb798ee3d0903e5e3", + "placeholder": "​", + "style": "IPY_MODEL_c17a522cbf9341d796fa7cacacded1cd", + "value": "special_tokens_map.json: 100%" + } + }, + "98185bbf7b794e3189ca9868a0a8c548": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0d67cc434d514e7fbb844462fe613936", + "max": 112, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_dc06c0ec5c7e40d98a8008d03b162a40", + "value": 112 + } + }, + "79ecc557cfba4409876c543ad9fd4d1d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ad17228a04184934a4fd107307c59c9c", + "placeholder": "​", + "style": "IPY_MODEL_bf1598b78a01422c99a77b0c00704f24", + "value": " 112/112 [00:00<00:00, 7.59kB/s]" + } + }, + "d51840e06afa471ca5d09e63d02d7af5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5323184c79864acfb798ee3d0903e5e3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c17a522cbf9341d796fa7cacacded1cd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0d67cc434d514e7fbb844462fe613936": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dc06c0ec5c7e40d98a8008d03b162a40": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ad17228a04184934a4fd107307c59c9c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bf1598b78a01422c99a77b0c00704f24": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "240ed6a8d0df400d9b5b8a86dbb89d03": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1cc8951a55584143a4f24b11d4221d0b", + "IPY_MODEL_f52c290c9f5d4c7d830578bd139ab4a9", + "IPY_MODEL_0ec0c7c3998d41e6890903c713f518bc" + ], + "layout": "IPY_MODEL_6b3936ecd33a41f2a61c368c86498865" + } + }, + "1cc8951a55584143a4f24b11d4221d0b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_93bd0eca9ace4bf4a10bd0467223ed90", + "placeholder": "​", + "style": "IPY_MODEL_ac8d646d12e6417ca32eb45e478a9cfe", + "value": "config.json: 100%" + } + }, + "f52c290c9f5d4c7d830578bd139ab4a9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ba1f368d05fd40578d7bca97269fffab", + "max": 743, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9a5d372096cb4f759778026b9b57b376", + "value": 743 + } + }, + "0ec0c7c3998d41e6890903c713f518bc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_81d022b3239647509d245b7ab890badb", + "placeholder": "​", + "style": "IPY_MODEL_832bc71baafb44118b338d3f124b9927", + "value": " 743/743 [00:00<00:00, 37.4kB/s]" + } + }, + "6b3936ecd33a41f2a61c368c86498865": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "93bd0eca9ace4bf4a10bd0467223ed90": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ac8d646d12e6417ca32eb45e478a9cfe": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ba1f368d05fd40578d7bca97269fffab": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9a5d372096cb4f759778026b9b57b376": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "81d022b3239647509d245b7ab890badb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "832bc71baafb44118b338d3f124b9927": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9fa2d08290ea419a8455e06ea92db3e8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ce808eccce44475a9628cf45c7cf7e56", + "IPY_MODEL_67ca36dd2e844fa6bb17ab776cb25b1f", + "IPY_MODEL_f586fe78b39244d097f774a380f976fc" + ], + "layout": "IPY_MODEL_e668274af14544148104c94f1a1cfc6a" + } + }, + "ce808eccce44475a9628cf45c7cf7e56": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6588d853f27c4cc795e41e146eab356f", + "placeholder": "​", + "style": "IPY_MODEL_3a1134aa7e19470bbac3d88c0ad63c0c", + "value": "model.safetensors: 100%" + } + }, + "67ca36dd2e844fa6bb17ab776cb25b1f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e5bd14e45ee04cfaaa0028f2b3f03341", + "max": 438349816, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3302a4bb82ff4d5989c01c0acfae4997", + "value": 438349816 + } + }, + "f586fe78b39244d097f774a380f976fc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f13df4048fc04e3394cab184b2fbadb0", + "placeholder": "​", + "style": "IPY_MODEL_df6656e2d170478ca0078d65677871f8", + "value": " 438M/438M [00:25<00:00, 15.8MB/s]" + } + }, + "e668274af14544148104c94f1a1cfc6a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6588d853f27c4cc795e41e146eab356f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3a1134aa7e19470bbac3d88c0ad63c0c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e5bd14e45ee04cfaaa0028f2b3f03341": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3302a4bb82ff4d5989c01c0acfae4997": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f13df4048fc04e3394cab184b2fbadb0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "df6656e2d170478ca0078d65677871f8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9607864fc48046f18b029ee3fc460998": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a66b8790b1d649dfbe2b8b23810f8b08", + "IPY_MODEL_4830ede53f4e481a844fceed058d3709", + "IPY_MODEL_035029d168a945c6825e95d7e640a649" + ], + "layout": "IPY_MODEL_3b84205b280940b7b5910a3a1bc59428" + } + }, + "a66b8790b1d649dfbe2b8b23810f8b08": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f80e6d5c5324449aae87bcb498060ad6", + "placeholder": "​", + "style": "IPY_MODEL_e66b07711d8145d0837735c52ac6ae5b", + "value": "config.json: 100%" + } + }, + "4830ede53f4e481a844fceed058d3709": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fd47bda4836b4c47a6eab7f4adad746c", + "max": 794, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a10be6ba5286402390e7e800df2773c5", + "value": 794 + } + }, + "035029d168a945c6825e95d7e640a649": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_86ceb09a7cea4cbebdc833b18c06eee1", + "placeholder": "​", + "style": "IPY_MODEL_80d0de24b4974c56944acee7dac4cd3c", + "value": " 794/794 [00:00<00:00, 24.0kB/s]" + } + }, + "3b84205b280940b7b5910a3a1bc59428": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f80e6d5c5324449aae87bcb498060ad6": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e66b07711d8145d0837735c52ac6ae5b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fd47bda4836b4c47a6eab7f4adad746c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a10be6ba5286402390e7e800df2773c5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "86ceb09a7cea4cbebdc833b18c06eee1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "80d0de24b4974c56944acee7dac4cd3c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cfa8b359cbe841c590022567b2912936": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cfbbebe5f3834beba9860b664b14263b", + "IPY_MODEL_607a9a07aead4d1ba536b9a037746307", + "IPY_MODEL_8989a92722094eaa87b78e03a3006ee5" + ], + "layout": "IPY_MODEL_4c4724a005d94c948c9df8accc4bd9be" + } + }, + "cfbbebe5f3834beba9860b664b14263b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f0e02ea03aff47b3b86b31e856f6f979", + "placeholder": "​", + "style": "IPY_MODEL_ec1eaf8260da4275a77ee827a3eee933", + "value": "pytorch_model.bin: 100%" + } + }, + "607a9a07aead4d1ba536b9a037746307": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3d98c4e94ef54414a1aabf4b57ca8fad", + "max": 90903017, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0aadb5b86e344bd482a973ce507fcb9b", + "value": 90903017 + } + }, + "8989a92722094eaa87b78e03a3006ee5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7ad7b106ae1b4104aea6faaa4451e12b", + "placeholder": "​", + "style": "IPY_MODEL_5228d72006e6422ab0fdc39241008622", + "value": " 90.9M/90.9M [00:05<00:00, 19.3MB/s]" + } + }, + "4c4724a005d94c948c9df8accc4bd9be": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f0e02ea03aff47b3b86b31e856f6f979": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec1eaf8260da4275a77ee827a3eee933": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3d98c4e94ef54414a1aabf4b57ca8fad": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0aadb5b86e344bd482a973ce507fcb9b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7ad7b106ae1b4104aea6faaa4451e12b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5228d72006e6422ab0fdc39241008622": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "371783f879314d9f97372bc35d73b43a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d6a4461d6f004844ac3e939d232d4ea4", + "IPY_MODEL_beb93bd7017649269a9725173bfe095a", + "IPY_MODEL_363f2fe905e24d7db098c85e0e6cac0d" + ], + "layout": "IPY_MODEL_49d9663243e94c9485839bbc9c0fdd6d" + } + }, + "d6a4461d6f004844ac3e939d232d4ea4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0e14830f5dcf4fb4af8d5a2762cac409", + "placeholder": "​", + "style": "IPY_MODEL_b12276a43b47439f8bc21b36a16c83bd", + "value": "tokenizer_config.json: 100%" + } + }, + "beb93bd7017649269a9725173bfe095a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_907b6225eef84efbadfb53b4f749cfa7", + "max": 316, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9632d557ac41490abee15f80f89d1e8c", + "value": 316 + } + }, + "363f2fe905e24d7db098c85e0e6cac0d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f9052f766c6644349111e72f9579a09b", + "placeholder": "​", + "style": "IPY_MODEL_1e49b79aaa654886b6c06544deb160f0", + "value": " 316/316 [00:00<00:00, 3.78kB/s]" + } + }, + "49d9663243e94c9485839bbc9c0fdd6d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0e14830f5dcf4fb4af8d5a2762cac409": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b12276a43b47439f8bc21b36a16c83bd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "907b6225eef84efbadfb53b4f749cfa7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9632d557ac41490abee15f80f89d1e8c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f9052f766c6644349111e72f9579a09b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1e49b79aaa654886b6c06544deb160f0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d6ee90511c1843b1b680df60afc66d95": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_61f362cebf6e4f259d7cb1e20b6f1aea", + "IPY_MODEL_06e798bf472645fc807917f7320b7ca0", + "IPY_MODEL_679e1bd10e79449a9240872fccc4d819" + ], + "layout": "IPY_MODEL_1cca0d4e0444459da89c234b54f25ff9" + } + }, + "61f362cebf6e4f259d7cb1e20b6f1aea": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6d98a47526f6447ea853aa2a17a07414", + "placeholder": "​", + "style": "IPY_MODEL_292c462527c54d35b04807262a35bd71", + "value": "vocab.txt: 100%" + } + }, + "06e798bf472645fc807917f7320b7ca0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2aeb4c955a5748459179106ea10bb1a5", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c6bd6b236f4e42b997d502dc27b95bba", + "value": 231508 + } + }, + "679e1bd10e79449a9240872fccc4d819": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6cdc965edc9648aebd9f3d89cae3955d", + "placeholder": "​", + "style": "IPY_MODEL_ea381193a01b4d85a457a70362182454", + "value": " 232k/232k [00:00<00:00, 588kB/s]" + } + }, + "1cca0d4e0444459da89c234b54f25ff9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6d98a47526f6447ea853aa2a17a07414": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "292c462527c54d35b04807262a35bd71": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2aeb4c955a5748459179106ea10bb1a5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c6bd6b236f4e42b997d502dc27b95bba": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "6cdc965edc9648aebd9f3d89cae3955d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ea381193a01b4d85a457a70362182454": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "00c97c56f748495db23e999b1daa823b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e5766214355249e1a00ca05c9cd72e5f", + "IPY_MODEL_7e2cca6135484b578c9a822d8f14ad0a", + "IPY_MODEL_9b7b7a7a9684476aac925a44e9b391b7" + ], + "layout": "IPY_MODEL_fba748349bac44eab84f9e9361ef076d" + } + }, + "e5766214355249e1a00ca05c9cd72e5f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1f68f5e201fd4a86ba134a39bf4a1727", + "placeholder": "​", + "style": "IPY_MODEL_a2ffb345d1ea467a92f952dbacf80b27", + "value": "special_tokens_map.json: 100%" + } + }, + "7e2cca6135484b578c9a822d8f14ad0a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_004e0f18fe604aa3974ea4dfd8421b31", + "max": 112, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4cc07587af674134a9e644eb3eb1674f", + "value": 112 + } + }, + "9b7b7a7a9684476aac925a44e9b391b7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a349191878374a2282ab194818e80d31", + "placeholder": "​", + "style": "IPY_MODEL_9f6f8810125e4a12ba9d00274bce61dc", + "value": " 112/112 [00:00<00:00, 1.97kB/s]" + } + }, + "fba748349bac44eab84f9e9361ef076d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1f68f5e201fd4a86ba134a39bf4a1727": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a2ffb345d1ea467a92f952dbacf80b27": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "004e0f18fe604aa3974ea4dfd8421b31": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4cc07587af674134a9e644eb3eb1674f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a349191878374a2282ab194818e80d31": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9f6f8810125e4a12ba9d00274bce61dc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "Install the required dependencies" + ], + "metadata": { + "id": "NBO00BhA1aV6" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Gfi2vdNiiHWT", + "outputId": "ad99cdad-b958-4018-fc34-bcf5d84431c5" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: lancedb in /usr/local/lib/python3.10/dist-packages (0.5.7)\n", + "Requirement already satisfied: langchain in /usr/local/lib/python3.10/dist-packages (0.1.9)\n", + "Requirement already satisfied: openai in /usr/local/lib/python3.10/dist-packages (1.13.3)\n", + "Requirement already satisfied: tiktoken in /usr/local/lib/python3.10/dist-packages (0.6.0)\n", + "Requirement already satisfied: pypdf in /usr/local/lib/python3.10/dist-packages (4.0.2)\n", + "Requirement already satisfied: tantivy in /usr/local/lib/python3.10/dist-packages (0.21.0)\n", + "Requirement already satisfied: deprecation in /usr/local/lib/python3.10/dist-packages (from lancedb) (2.1.0)\n", + "Requirement already satisfied: pylance==0.9.18 in /usr/local/lib/python3.10/dist-packages (from lancedb) (0.9.18)\n", + "Requirement already satisfied: ratelimiter~=1.0 in /usr/local/lib/python3.10/dist-packages (from lancedb) (1.2.0.post0)\n", + "Requirement already satisfied: retry>=0.9.2 in /usr/local/lib/python3.10/dist-packages (from lancedb) (0.9.2)\n", + "Requirement already satisfied: tqdm>=4.27.0 in /usr/local/lib/python3.10/dist-packages (from lancedb) (4.66.2)\n", + "Requirement already satisfied: pydantic>=1.10 in /usr/local/lib/python3.10/dist-packages (from lancedb) (2.6.1)\n", + "Requirement already satisfied: attrs>=21.3.0 in /usr/local/lib/python3.10/dist-packages (from lancedb) (23.2.0)\n", + "Requirement already satisfied: semver>=3.0 in /usr/local/lib/python3.10/dist-packages (from lancedb) (3.0.2)\n", + "Requirement already satisfied: cachetools in /usr/local/lib/python3.10/dist-packages (from lancedb) (5.3.2)\n", + "Requirement already satisfied: pyyaml>=6.0 in /usr/local/lib/python3.10/dist-packages (from lancedb) (6.0.1)\n", + "Requirement already satisfied: click>=8.1.7 in /usr/local/lib/python3.10/dist-packages (from lancedb) (8.1.7)\n", + "Requirement already satisfied: requests>=2.31.0 in /usr/local/lib/python3.10/dist-packages (from lancedb) (2.31.0)\n", + "Requirement already satisfied: overrides>=0.7 in /usr/local/lib/python3.10/dist-packages (from lancedb) (7.7.0)\n", + "Requirement already satisfied: pyarrow>=12 in /usr/local/lib/python3.10/dist-packages (from pylance==0.9.18->lancedb) (14.0.2)\n", + "Requirement already satisfied: numpy>=1.22 in /usr/local/lib/python3.10/dist-packages (from pylance==0.9.18->lancedb) (1.25.2)\n", + "Requirement already satisfied: SQLAlchemy<3,>=1.4 in /usr/local/lib/python3.10/dist-packages (from langchain) (2.0.27)\n", + "Requirement already satisfied: aiohttp<4.0.0,>=3.8.3 in /usr/local/lib/python3.10/dist-packages (from langchain) (3.9.3)\n", + "Requirement already satisfied: async-timeout<5.0.0,>=4.0.0 in /usr/local/lib/python3.10/dist-packages (from langchain) (4.0.3)\n", + "Requirement already satisfied: dataclasses-json<0.7,>=0.5.7 in /usr/local/lib/python3.10/dist-packages (from langchain) (0.6.4)\n", + "Requirement already satisfied: jsonpatch<2.0,>=1.33 in /usr/local/lib/python3.10/dist-packages (from langchain) (1.33)\n", + "Requirement already satisfied: langchain-community<0.1,>=0.0.21 in /usr/local/lib/python3.10/dist-packages (from langchain) (0.0.24)\n", + "Requirement already satisfied: langchain-core<0.2,>=0.1.26 in /usr/local/lib/python3.10/dist-packages (from langchain) (0.1.27)\n", + "Requirement already satisfied: langsmith<0.2.0,>=0.1.0 in /usr/local/lib/python3.10/dist-packages (from langchain) (0.1.10)\n", + "Requirement already satisfied: tenacity<9.0.0,>=8.1.0 in /usr/local/lib/python3.10/dist-packages (from langchain) (8.2.3)\n", + "Requirement already satisfied: anyio<5,>=3.5.0 in /usr/local/lib/python3.10/dist-packages (from openai) (3.7.1)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /usr/lib/python3/dist-packages (from openai) (1.7.0)\n", + "Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from openai) (0.27.0)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from openai) (1.3.0)\n", + "Requirement already satisfied: typing-extensions<5,>=4.7 in /usr/local/lib/python3.10/dist-packages (from openai) (4.9.0)\n", + "Requirement already satisfied: regex>=2022.1.18 in /usr/local/lib/python3.10/dist-packages (from tiktoken) (2023.12.25)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (1.3.1)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (1.4.1)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (6.0.5)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp<4.0.0,>=3.8.3->langchain) (1.9.4)\n", + "Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3.5.0->openai) (3.6)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3.5.0->openai) (1.2.0)\n", + "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /usr/local/lib/python3.10/dist-packages (from dataclasses-json<0.7,>=0.5.7->langchain) (3.21.0)\n", + "Requirement already satisfied: typing-inspect<1,>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from dataclasses-json<0.7,>=0.5.7->langchain) (0.9.0)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->openai) (2024.2.2)\n", + "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->openai) (1.0.4)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.10/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai) (0.14.0)\n", + "Requirement already satisfied: jsonpointer>=1.9 in /usr/local/lib/python3.10/dist-packages (from jsonpatch<2.0,>=1.33->langchain) (2.4)\n", + "Requirement already satisfied: packaging<24.0,>=23.2 in /usr/local/lib/python3.10/dist-packages (from langchain-core<0.2,>=0.1.26->langchain) (23.2)\n", + "Requirement already satisfied: orjson<4.0.0,>=3.9.14 in /usr/local/lib/python3.10/dist-packages (from langsmith<0.2.0,>=0.1.0->langchain) (3.9.15)\n", + "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic>=1.10->lancedb) (0.6.0)\n", + "Requirement already satisfied: pydantic-core==2.16.2 in /usr/local/lib/python3.10/dist-packages (from pydantic>=1.10->lancedb) (2.16.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.31.0->lancedb) (3.3.2)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.31.0->lancedb) (2.0.7)\n", + "Requirement already satisfied: decorator>=3.4.2 in /usr/local/lib/python3.10/dist-packages (from retry>=0.9.2->lancedb) (4.4.2)\n", + "Requirement already satisfied: py<2.0.0,>=1.4.26 in /usr/local/lib/python3.10/dist-packages (from retry>=0.9.2->lancedb) (1.11.0)\n", + "Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.10/dist-packages (from SQLAlchemy<3,>=1.4->langchain) (3.0.3)\n", + "Requirement already satisfied: mypy-extensions>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7,>=0.5.7->langchain) (1.0.0)\n" + ] + } + ], + "source": [ + "!pip install lancedb langchain openai tiktoken pypdf tantivy sentence-transformers" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# download your choice pdf file & upload here\n", + "\n", + " https://github.com/akashAD98/dummy_data/blob/main/microsoft_annual_report_2022.pdf" + ], + "metadata": { + "id": "je__kyDIyI62" + } + }, + { + "cell_type": "code", + "source": [ + "import os\n", + "import time\n", + "import lancedb\n", + "import getpass\n", + "import pandas as pd\n", + "from lancedb.embeddings import EmbeddingFunctionRegistry\n", + "from lancedb.pydantic import LanceModel, Vector\n", + "from lancedb.embeddings import get_registry\n", + "from langchain.text_splitter import CharacterTextSplitter\n", + "from langchain.document_loaders import PyPDFLoader\n", + "from langchain.embeddings import OpenAIEmbeddings\n", + "from langchain.embeddings import HuggingFaceEmbeddings\n", + "from langchain_community.vectorstores import LanceDB\n", + "\n", + "\n", + "# Set the OPENAI_API_KEY environment variable\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-yourkey\"" + ], + "metadata": { + "id": "QcfZ_lr6FrEA" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def word_wrap(string, n_chars=72):\n", + " # Wrap a string at the next space after n_chars\n", + " if len(string) < n_chars:\n", + " return string\n", + " else:\n", + " return (\n", + " string[:n_chars].rsplit(\" \", 1)[0]\n", + " + \"\\n\"\n", + " + word_wrap(string[len(string[:n_chars].rsplit(\" \", 1)[0]) + 1 :], n_chars)\n", + " )" + ], + "metadata": { + "id": "NtbIb3QPjfuW" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "We are using langchain fro loading the pdf file & doing prprocessing" + ], + "metadata": { + "id": "7JSJy4AROGOM" + } + }, + { + "cell_type": "code", + "source": [ + "# your pdf file\n", + "loader = PyPDFLoader(\"/content/microsoft_annual_report_2022.pdf\")\n", + "documents = loader.load_and_split()\n", + "\n", + "# split it into chunks\n", + "text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)\n", + "docsn = text_splitter.split_documents(documents)\n", + "\n", + "embeddings = OpenAIEmbeddings(model=\"text-embedding-3-large\")\n", + "\n", + "docsearch = LanceDB.from_documents(docsn, embeddings)\n", + "\n", + "query = \"What were the most important factors that contributed to increases in revenue?\"\n", + "docsnew = docsearch.similarity_search(query)\n", + "print(docsnew[0].page_content)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0TUtpO0_jkUY", + "outputId": "919b95f7-1a6e-4f1c-c063-fde2d978f57e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The class `langchain_community.embeddings.openai.OpenAIEmbeddings` was deprecated in langchain-community 0.1.0 and will be removed in 0.2.0. An updated version of the class exists in the langchain-openai package and should be used instead. To use it run `pip install -U langchain-openai` and import as `from langchain_openai import OpenAIEmbeddings`.\n", + " warn_deprecated(\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "35 \n", + "Reportable Segments \n", + "Fiscal Year 2022 Compared with Fiscal Year 2021 \n", + "Productivity and Business Processes \n", + "Revenue increased $9.4 billion or 18%. \n", + "• Office Commercial products and cloud services revenue increased $4.4 billion or 13%. Office 365 \n", + "Commercial revenue grew 18% driven by seat growth of 14%, with continued momentum in small and \n", + "medium business and frontline worker offerings, as well as growth in revenue per user. Office Commercial \n", + "products revenue declined 22% driven by continued customer shift to cloud offerings. \n", + "• Office Consumer products and cloud services revenue increased $641 million or 11% driven by Microsoft 365 \n", + "Consumer subscription revenue. Microsoft 365 Consumer subscribers grew 15% to 59.7 million. \n", + "• LinkedIn revenue increased $3.5 billion or 34% driven by a strong job market in our Talent Solutions business \n", + "and advertising demand in our Marketing Solutions business. \n", + "• Dynamics products and cloud services revenue increased 25% driven by Dynamics 365 growth of 39%. \n", + "Operating income increased $5.3 billion or 22%. \n", + "• Gross margin increased $7.3 billion or 17% driven by growth in Office 365 Commercial and LinkedIn. Gross \n", + "margin percentage was relatively unchanged. Excluding the impact of the change in accounting estimate, \n", + "gross margin percentage increased 2 points driven by improvement across all cloud services. \n", + "• Operating expenses increased $2.0 billion or 11% driven by investments in LinkedIn and cloud engineering. \n", + "Gross margin and operating income both included an unfavorable foreign currency impact of 2%. \n", + "Intelligent Cloud \n", + "Revenue increased $15.2 billion or 25%. \n", + "• Server products and cloud services revenue increased $14.7 billion or 28% driven by Azure and other cloud \n", + "services. Azure and other cloud services revenue grew 45% driven by growth in our consumption -based \n", + "services. Server products revenue increased 5% driven by hybrid solutions, including Windows Server and \n", + "SQL Server running in multi -cloud environments. \n", + "• Enterprise Services revenue increased $464 million or 7% driven by growth in Enterprise Support Services. \n", + "Operating income increased $6.6 billion or 25%. \n", + "• Gross margin increased $9.4 billion or 22% driven by growth in Azure and other cloud services. Gross margin \n", + "percentage decreased. Excluding the impact of the change in accounting estimate, gross margin percentage \n", + "was relatively unchanged driven by improvement in Azure and other cloud services, offset in part by sales \n", + "mix shift to Azure and other cloud services. \n", + "• Operating expenses increased $2.8 billion or 16% driven by investments in Azure and other cloud services. \n", + "Revenue and operating income included an unfavorable foreign currency impact of 2% and 3%, respectively. \n", + "More Personal Computing \n", + "Revenue increased $5.6 billion or 10%. \n", + "• Windows revenue increased $2.3 billion or 10% driven by growth in Windows OEM and Windows \n", + "Commercial. Windows OEM revenue increased 11% driven by continued strength in the commercial PC \n", + "market, which has higher revenue per license. Windows Commercial products and cloud services revenue \n", + "increased 11% driven by demand for Microsoft 365.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "L9y74fpPfHag" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Query expansion" + ], + "metadata": { + "id": "nr7_uISgfHo4" + } + }, + { + "cell_type": "code", + "source": [ + "# we are using openai for generating query\n", + "import os\n", + "import openai\n", + "from openai import OpenAI\n", + "\n", + "openai.api_key = os.environ[\"OPENAI_API_KEY\"]\n", + "openai_client = OpenAI()\n", + "\n", + "\n", + "def augment_query_generated(query, model=\"gpt-3.5-turbo\"):\n", + " messages = [\n", + " {\n", + " \"role\": \"system\",\n", + " \"content\": \"You are a helpful expert financial research assistant. Provide an example answer to the given question, that might be found in a document like an annual report. \",\n", + " },\n", + " {\"role\": \"user\", \"content\": query},\n", + " ]\n", + "\n", + " response = openai_client.chat.completions.create(\n", + " model=model,\n", + " messages=messages,\n", + " )\n", + " content = response.choices[0].message.content\n", + " return content" + ], + "metadata": { + "id": "B7B0XA3ajsFY" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### its generating query & hypothetica answer" + ], + "metadata": { + "id": "-2v8mN9XQy7Y" + } + }, + { + "cell_type": "code", + "source": [ + "original_query = (\n", + " \"What were the most important factors that contributed to increases in revenue?\"\n", + ")\n", + "hypothetical_answer = augment_query_generated(original_query)\n", + "# we are combining our orignal query + hypothetical_answer\n", + "joint_query = f\"{original_query} {hypothetical_answer}\"\n", + "print(word_wrap(joint_query))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPBqpky3jtwM", + "outputId": "51c6b216-d80d-458a-f058-79df1c69b37f" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "What were the most important factors that contributed to increases in\n", + "revenue? \"In the fiscal year 2021, our company experienced significant\n", + "growth in revenue due to several key factors. Firstly, our successful\n", + "market expansion efforts into emerging markets led to a substantial\n", + "increase in sales volume from new customer segments. Additionally,\n", + "strategic partnerships with key industry players resulted in lucrative\n", + "collaborations that boosted our revenue streams. Furthermore, our focus\n", + "on innovation and product development led to the launch of highly\n", + "successful new product lines that resonated well with our target\n", + "audience. Lastly, our robust marketing campaigns and enhanced digital\n", + "presence played a crucial role in driving higher sales and revenue\n", + "growth for the year.\"\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# we are passing the joint_query & fining the similar docs for this query\n", + "retrieved_documents = docsearch.similarity_search(joint_query, k=4)\n", + "print(retrieved_documents)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "daOypkNqjwIh", + "outputId": "830749bc-36bc-4d27-cc42-dced1fdfd0b2" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[Document(page_content='35 \\nReportable Segments \\nFiscal Year 2022 Compared with Fiscal Year 2021 \\nProductivity and Business Processes \\nRevenue increased $9.4 billion or 18%. \\n• Office Commercial products and cloud services revenue increased $4.4 billion or 13%. Office 365 \\nCommercial revenue grew 18% driven by seat growth of 14%, with continued momentum in small and \\nmedium business and frontline worker offerings, as well as growth in revenue per user. Office Commercial \\nproducts revenue declined 22% driven by continued customer shift to cloud offerings. \\n• Office Consumer products and cloud services revenue increased $641 million or 11% driven by Microsoft 365 \\nConsumer subscription revenue. Microsoft 365 Consumer subscribers grew 15% to 59.7 million. \\n• LinkedIn revenue increased $3.5 billion or 34% driven by a strong job market in our Talent Solutions business \\nand advertising demand in our Marketing Solutions business. \\n• Dynamics products and cloud services revenue increased 25% driven by Dynamics 365 growth of 39%. \\nOperating income increased $5.3 billion or 22%. \\n• Gross margin increased $7.3 billion or 17% driven by growth in Office 365 Commercial and LinkedIn. Gross \\nmargin percentage was relatively unchanged. Excluding the impact of the change in accounting estimate, \\ngross margin percentage increased 2 points driven by improvement across all cloud services. \\n• Operating expenses increased $2.0 billion or 11% driven by investments in LinkedIn and cloud engineering. \\nGross margin and operating income both included an unfavorable foreign currency impact of 2%. \\nIntelligent Cloud \\nRevenue increased $15.2 billion or 25%. \\n• Server products and cloud services revenue increased $14.7 billion or 28% driven by Azure and other cloud \\nservices. Azure and other cloud services revenue grew 45% driven by growth in our consumption -based \\nservices. Server products revenue increased 5% driven by hybrid solutions, including Windows Server and \\nSQL Server running in multi -cloud environments. \\n• Enterprise Services revenue increased $464 million or 7% driven by growth in Enterprise Support Services. \\nOperating income increased $6.6 billion or 25%. \\n• Gross margin increased $9.4 billion or 22% driven by growth in Azure and other cloud services. Gross margin \\npercentage decreased. Excluding the impact of the change in accounting estimate, gross margin percentage \\nwas relatively unchanged driven by improvement in Azure and other cloud services, offset in part by sales \\nmix shift to Azure and other cloud services. \\n• Operating expenses increased $2.8 billion or 16% driven by investments in Azure and other cloud services. \\nRevenue and operating income included an unfavorable foreign currency impact of 2% and 3%, respectively. \\nMore Personal Computing \\nRevenue increased $5.6 billion or 10%. \\n• Windows revenue increased $2.3 billion or 10% driven by growth in Windows OEM and Windows \\nCommercial. Windows OEM revenue increased 11% driven by continued strength in the commercial PC \\nmarket, which has higher revenue per license. Windows Commercial products and cloud services revenue \\nincreased 11% driven by demand for Microsoft 365.', metadata={'vector': [0.027368593961000443, -0.014953545294702053, -0.0041684047318995, 0.03653769567608833, -0.009155231527984142, -0.01824110560119152, -0.034734394401311874, 0.045415498316287994, -0.014287710189819336, 0.0345679335296154, 0.05373843386769295, -0.019212115556001663, 0.00569427665323019, -0.04400059953331947, -0.07263150066137314, 0.03933975100517273, -0.02145930752158165, -0.005413377657532692, 0.023595528677105904, 0.009189910255372524, -0.03531700000166893, 0.004102514591068029, -0.008537947200238705, 0.034734394401311874, -0.016035526990890503, -0.005881542805582285, 0.014273838140070438, 0.013753654435276985, 0.02448330819606781, 0.015799710527062416, 0.002777780406177044, -0.003655156819149852, -0.026758244261145592, -0.009828002192080021, 0.05662371963262558, 0.001376752625219524, 0.016243599355220795, -0.05432103946805, 0.05512559041380882, -0.011901801452040672, -0.02796507067978382, 0.0351782850921154, 0.007636295631527901, 0.03667641431093216, 0.017908187583088875, -0.014981288462877274, -0.0031973952427506447, 0.026258869096636772, 0.008676663041114807, 0.00492440490052104, -0.028187016025185585, -0.03970041498541832, 0.0056526619009673595, -0.002992789726704359, 0.016673618927598, -0.004307120107114315, 0.0734637975692749, 0.026910832151770592, -0.008461653254926205, -0.02005827985703945, -0.017006536945700645, -0.0070259468629956245, -0.012512150220572948, -0.01646554470062256, -0.010549323633313179, 0.020224738866090775, -0.020932188257575035, -0.0049348087050020695, 0.005507010500878096, -0.03229299932718277, -0.03379112854599953, -0.028395090252161026, 0.02937997132539749, 0.029907090589404106, -0.0031367072369903326, -0.005787909496575594, 0.011298388242721558, 0.0014305049553513527, 0.017922058701515198, 0.002668541856110096, 0.009335561655461788, 0.0490775890648365, -0.013996407389640808, -0.0019038720056414604, 0.0015891608782112598, -0.014565140940248966, -0.031654905527830124, -0.08417264372110367, -0.011041764169931412, 0.0031349733471870422, 0.001839715987443924, -0.00947427749633789, 0.061090365052223206, -0.022499674931168556, 0.004258569795638323, -0.034540191292762756, -0.03703707456588745, 0.0069704605266451836, 0.0478568933904171, -0.003981138579547405, 0.03431824594736099, -0.014939673244953156, -0.003984606359153986, -0.04830078408122063, 0.026175638660788536, 0.041642431169748306, -0.01473159994930029, 0.014190608635544777, -0.041892118752002716, 0.03878489136695862, -0.0035303127951920033, 0.0015761563554406166, -0.018518537282943726, 0.0367596410214901, 0.0037453221157193184, 0.020737987011671066, 0.012838131748139858, -0.009432663209736347, 0.03728676214814186, -0.01516161859035492, 0.057206325232982635, -0.03462342172861099, 0.02634209766983986, -0.031155530363321304, 0.012290204875171185, 0.04094885289669037, -0.016396187245845795, -0.048994358628988266, 0.015078389085829258, -0.03187685087323189, -0.05959223583340645, 0.03381887078285217, -0.07751429080963135, -0.03193233907222748, 0.01661813259124756, -0.01990569196641445, 0.006599396001547575, 0.011548075824975967, 0.006530038081109524, 0.041032083332538605, 0.010445286519825459, -0.02699406072497368, 0.01763075590133667, -0.006620203610509634, -0.03340272232890129, 0.009952845983207226, 0.004099046811461449, 0.03451244905591011, 0.03667641431093216, -0.016243599355220795, -0.0025818445719778538, -0.004459707532078028, -0.007823561318218708, 0.01772785745561123, 0.01503677386790514, -0.03490085154771805, 0.03462342172861099, -0.007879047654569149, 0.0009129222598858178, 0.0035008357372134924, -0.019406316801905632, 0.03642672300338745, 0.0005617982824333012, -0.002770844614133239, 0.007428221870213747, 0.005891946144402027, 0.04746848717331886, 0.005822588689625263, -0.045470982789993286, 0.01678459160029888, 0.0005292868008837104, -0.007220148574560881, -0.004348734859377146, -0.009779452346265316, 0.019225986674427986, -0.010854498483240604, 0.004008881747722626, -0.022582905367016792, -0.039367496967315674, -0.0031436430290341377, -0.010750461369752884, 0.006481487769633532, -0.016132628545165062, -0.016756847500801086, -0.006023726426064968, -0.018518537282943726, 0.028048301115632057, 0.003651689039543271, -0.00603066198527813, 0.02186158299446106, 0.02574562095105648, 0.02645307034254074, 0.05304485559463501, 0.014273838140070438, 0.03700932860374451, -0.010972406715154648, 0.00039880743133835495, 0.012297140434384346, -0.0005297203315421939, -0.013413801789283752, -0.025828849524259567, 0.017311710864305496, 0.0062491390854120255, 0.00839229580014944, 0.031211016699671745, 0.0003998911415692419, 0.008156479336321354, -0.0035008357372134924, -0.011478718370199203, -0.003884037723764777, 0.014800957404077053, 0.003880569711327553, 0.00411638617515564, 0.04225277900695801, -0.024746868759393692, 0.0242336206138134, 0.043445736169815063, 0.02605079486966133, 0.005222643259912729, -0.03404081612825394, 0.0017928995657712221, 0.0024899456184357405, 0.03345821052789688, 0.00415453314781189, -0.023290354758501053, -0.047884635627269745, -0.014142058789730072, -0.01904565654695034, -0.017103636637330055, -0.023609399795532227, -0.04488837718963623, -0.04871692880988121, -0.024677511304616928, 0.01778334379196167, 0.023248739540576935, -0.03792485222220421, 0.02241644635796547, 0.005912753753364086, -0.046331021934747696, -0.021847711876034737, 0.043196048587560654, -0.02009989507496357, -0.012075196020305157, -0.012713287025690079, -0.019475674256682396, 0.0048411753959953785, 0.011346938088536263, 0.1074213832616806, -0.000734759378246963, -0.017908187583088875, 0.007761139422655106, -0.015744224190711975, 0.0076224240474402905, -0.0008275254513137043, 0.0339575856924057, 0.010549323633313179, 0.05390489473938942, 0.008544882759451866, -0.007469836622476578, -0.011853250674903393, 0.00047206663293763995, -0.003606606274843216, -0.022249987348914146, 0.017422683537006378, 0.03834100067615509, 0.055791426450014114, 0.01783883012831211, 0.007462901063263416, 0.0017590875504538417, 0.018879197537899017, 0.023859089240431786, -0.010847561992704868, 0.030905842781066895, 0.002944239182397723, -0.0068282769061625, 0.05798313394188881, 0.025273988023400307, -0.04105982556939125, -0.017561398446559906, 0.02000279352068901, -0.00719240540638566, 0.016826206818223, 0.012852002866566181, 0.026161767542362213, -0.014911930076777935, -0.008752956055104733, -0.0034280100371688604, -0.005333615932613611, -0.028284117579460144, -0.0023737712763249874, -0.0022194499615579844, -0.007643231190741062, 0.016451673582196236, 0.027784740552306175, -0.0013125966070219874, 0.018865326419472694, 0.019864078611135483, 0.05151898413896561, 0.0052573224529623985, 0.00858649704605341, -0.019406316801905632, -0.010167855769395828, -0.034484706819057465, -0.03922877833247185, 0.009703158400952816, 0.041947606950998306, 0.03714804723858833, 0.0005041446420364082, -0.017006536945700645, 0.02034958265721798, 0.02756279520690441, -0.0034817622508853674, -0.019073398783802986, 0.00639825826510787, 0.0017235416453331709, 0.03581637516617775, 0.06269946694374084, -0.010840626433491707, 0.00869053415954113, -0.002713624620810151, 0.0014556471724063158, 0.04685813933610916, -0.04358445107936859, 0.0062491390854120255, 0.007560001686215401, -0.02046055532991886, -0.017464296892285347, 0.0735192820429802, 0.008995709009468555, 0.013080883771181107, 0.009508956223726273, 0.013441544957458973, 0.013621875084936619, 0.014884186908602715, 0.049743425101041794, 0.0025211565662175417, -0.004702460020780563, 0.01017479132860899, 0.010056883096694946, 0.0066652861423790455, 0.028797363862395287, 7.141687819967046e-05, -0.04705234244465828, 0.004619230516254902, -0.011000149883329868, -0.0010438350727781653, -0.05842702463269234, 0.0009415323147550225, -0.01889306865632534, 0.01923985779285431, 0.0008301263442263007, -0.03545571491122246, 0.041531458497047424, -0.022097399458289146, -0.014537397772073746, 0.011353874579071999, -0.022735491394996643, -0.028325730934739113, 0.015952296555042267, 0.0030690832063555717, -0.0011296654120087624, -0.02141769416630268, -0.030212264508008957, 0.05185190215706825, -0.03612155094742775, -0.020516041666269302, 0.01768624223768711, -0.01879596710205078, 0.06613960862159729, -0.05429329723119736, 0.004092111252248287, 0.06120133772492409, 0.006106955464929342, -0.0175891425460577, -0.014648370444774628, -0.014856443740427494, -0.021625766530632973, 0.0466361939907074, -0.01864338107407093, 0.03820228576660156, -0.008218901231884956, 0.05162995681166649, 0.02937997132539749, -0.015286462381482124, 0.004723267164081335, -0.006391322705894709, -0.0036724964156746864, -0.005295468959957361, -0.025149144232273102, 0.05914834514260292, -0.03229299932718277, 0.03093358501791954, -0.027271492406725883, -0.006290753837674856, -0.017408812418580055, -0.0020894042681902647, -0.02281872183084488, 0.016104884445667267, -0.03068389743566513, -0.015078389085829258, 0.0006654015160165727, -0.024843968451023102, -0.019212115556001663, 0.014398681931197643, -0.020946059376001358, 0.004109450615942478, 0.005122074857354164, -0.02463589608669281, 0.020543783903121948, 0.016895564272999763, -0.01294910442084074, -0.03268140181899071, -0.007046754006296396, -0.012699415907263756, 0.026480814442038536, -0.033929843455553055, 0.019212115556001663, 0.025329474359750748, -0.035344742238521576, 0.02348455600440502, 0.016562646254897118, 0.005583303980529308, 0.002115413313731551, 0.0327368900179863, -0.03617703542113304, 0.011235966347157955, 0.009404920041561127, 0.016146499663591385, -0.0035615237429738045, 0.007064093369990587, -0.007927598431706429, -0.007733396254479885, 0.027229879051446915, 0.02004440873861313, -0.002815927378833294, 0.03415178880095482, 0.007657102774828672, 0.003169652074575424, 0.023456813767552376, 0.006578588858246803, -0.006935781333595514, -0.002698018914088607, -0.025371089577674866, -0.016992663964629173, -0.05193513259291649, 0.032459456473588943, -0.0679151713848114, 0.0013117296621203423, -0.027479566633701324, 0.0006177180330269039, -0.015577765181660652, 0.03537248447537422, -0.003887505503371358, 0.008544882759451866, -0.02397006005048752, 0.027687638998031616, 0.008600369095802307, -0.023290354758501053, 0.010861434042453766, -0.016132628545165062, 0.01818561926484108, 0.012505213730037212, 0.024205876514315605, -0.009661543183028698, 0.03320852294564247, 0.014911930076777935, -0.011430167593061924, -0.016951050609350204, 0.0006294221966527402, 0.023082280531525612, 0.010764332488179207, 0.02075185813009739, -0.0008799772476777434, 0.010459158569574356, 0.00040292556514032185, -0.020696371793746948, 0.03356918320059776, -0.011374681256711483, -0.008683598600327969, 0.00228013820014894, 0.042585697025060654, 0.009834937751293182, 0.005891946144402027, -0.016229728236794472, 0.016895564272999763, -0.04774592071771622, 0.012588443234562874, -0.024719124659895897, 0.012276332825422287, -0.013115562498569489, -0.023817474022507668, -0.0023477619979530573, 0.053821664303541183, -0.048134323209524155, -0.0019038720056414604, -0.054126840084791183, -0.007109175901859999, 0.00686642387881875, 0.019184371456503868, -0.022180629894137383, -0.008170350454747677, 0.024843968451023102, -0.020585399121046066, -0.03626026585698128, -0.026841474696993828, -0.034845367074012756, -0.007331121247261763, -1.3424530152406078e-05, -0.04205857962369919, 0.04000558704137802, 0.014662242494523525, -0.014315453357994556, 0.016742976382374763, -0.015452921390533447, -0.03659318387508392, 0.002243725350126624, -0.00906506646424532, -0.036149293184280396, 0.0061208270490169525, -0.01853240840137005, -0.009176039136946201, -0.020113766193389893, -0.006758918985724449, 0.015633251518011093, -0.0186849944293499, -0.004803028889000416, 0.006495359353721142, 0.03215428441762924, 0.0586489699780941, 0.025565290823578835, -0.02528785914182663, 0.014703856781125069, 0.009571378119289875, 0.0175891425460577, -0.003613542066887021, -0.014620627276599407, 0.008752956055104733, -0.02306840941309929, -0.01025108527392149, 0.029435455799102783, -0.024094905704259872, 0.029907090589404106, 0.01586906798183918, -0.0234706848859787, 0.011901801452040672, 0.044805146753787994, 0.05848250910639763, -0.027465695515275, -0.009439598768949509, -0.013101691380143166, 0.01828272081911564, -0.01929534412920475, 0.01824110560119152, -0.028436703607439995, 0.014204480685293674, -0.0025402300525456667, 0.03834100067615509, 0.03415178880095482, 0.016285214573144913, -0.006582056637853384, -0.021070905029773712, 0.023651015013456345, 0.0012458397541195154, -0.00717853382229805, -0.007643231190741062, -0.003133239224553108, 0.014079635962843895, 0.010431415401399136, 0.0016177709912881255, -0.001858789473772049, 0.0021102114114910364, -0.0021483583841472864, 0.03134973347187042, -0.01813013292849064, -0.00876682810485363, 0.03748096153140068, 0.0026477344799786806, -0.019711490720510483, 0.008198093622922897, 0.018227234482765198, -0.02689696103334427, -0.00570468045771122, 0.004102514591068029, 0.003894441295415163, -0.011555012315511703, -0.0029581107664853334, 0.01772785745561123, -0.00977251585572958, -0.007636295631527901, -0.04533226788043976, -0.020127637311816216, 0.02901930920779705, 0.015147746540606022, 0.0047856890596449375, -0.008524075150489807, 0.011610498651862144, 0.01586906798183918, 0.029047053307294846, 0.010563194751739502, -0.028131529688835144, 0.004515193868428469, 0.030489696189761162, 0.0025211565662175417, -0.026619529351592064, -0.016188114881515503, 0.011756150051951408, -0.005961304064840078, 0.0023494958877563477, 0.009717029519379139, 0.021681252866983414, -0.007240955717861652, 0.026813730597496033, -0.033374980092048645, -0.01556389406323433, -0.0070224786177277565, -0.005042313132435083, 0.005943964701145887, 0.002127551008015871, -0.02413651905953884, -0.042391497641801834, 0.03093358501791954, -0.008003891445696354, 0.0032164687290787697, 0.03098907135426998, -0.04092111065983772, 0.007234020158648491, 0.01179082877933979, -0.02197255566716194, -0.006148570217192173, 0.004085175227373838, -0.0018414499936625361, -0.030240006744861603, 0.008184222504496574, 0.008267451077699661, -0.022790977731347084, 0.002699753036722541, 0.023248739540576935, 0.011055635288357735, -0.03551119938492775, 0.008503268472850323, -0.009196845814585686, 0.013219599612057209, 0.001713138073682785, 0.13105852901935577, 0.009002644568681717, -0.0028800831642001867, -0.010022204369306564, 0.01829659193754196, 0.003675964195281267, 0.0196005180478096, 0.012331819161772728, -0.006335836369544268, 0.008815377950668335, 0.006387854926288128, -0.02151479385793209, -0.017644628882408142, -0.015272591263055801, 0.012775709852576256, 0.00093806441873312, 0.030350979417562485, -0.03778613731265068, 0.0018258445197716355, 0.017339453101158142, 0.0035251108929514885, -0.006946185138076544, -0.021334463730454445, -0.012054388411343098, 0.003480028361082077, -0.013698168098926544, 0.012484407052397728, -0.03939523920416832, 0.0014781884383410215, 0.01874048076570034, 0.015855196863412857, -0.016951050609350204, -0.015286462381482124, -0.009363304823637009, 0.023304225876927376, 0.009335561655461788, 0.022249987348914146, 0.0008812777232378721, -0.02201417088508606, 0.014606756158173084, -0.0001313463581027463, -0.003407202661037445, 0.01481482945382595, -0.051713187247514725, -0.001707069226540625, -0.00301012909039855, -0.0026043858379125595, 0.0007898121257312596, 0.010424479842185974, -0.015938425436615944, -0.00413025775924325, 0.00952282827347517, -0.02034958265721798, -0.016687490046024323, -0.016562646254897118, 0.018116261810064316, 0.008420038968324661, 0.017561398446559906, -0.01146484725177288, -0.011187415570020676, -0.010410607792437077, -0.01818561926484108, 0.005170625168830156, -0.0011071241460740566, -0.02195868454873562, 0.0052573224529623985, 0.010445286519825459, 0.02050217054784298, 0.023914573714137077, -0.008676663041114807, -0.02170899696648121, -0.014717727899551392, 0.00864198338240385, -0.0022038444876670837, 0.01763075590133667, -0.03939523920416832, 0.009557507000863552, 0.03681512922048569, 0.008496331982314587, -0.03601057827472687, -0.01869886741042137, 0.011277580633759499, -0.004279377404600382, 0.012685544788837433, 0.016437802463769913, -0.03348595276474953, 0.0013264681911095977, 0.01068110391497612, -0.012789580971002579, 0.003077753121033311, -0.00686642387881875, -0.01206132397055626, 0.013816076330840588, -0.0016498490003868937, 0.018574023619294167, -0.0027292300947010517, -0.006075744517147541, -0.01095853466540575, -0.0021674316376447678, 0.01904565654695034, 0.016188114881515503, -0.0008687066147103906, 0.027798611670732498, 0.04092111065983772, 2.546732321206946e-05, 0.027826355770230293, 0.004275909159332514, 0.0006836079410277307, -0.04397285357117653, -0.006134698633104563, -0.012373434379696846, -0.006339304149150848, 0.018976297229528427, 0.01098627783358097, -0.010112369433045387, 0.004976422991603613, 0.031765878200531006, 0.001394959050230682, 0.016410058364272118, -0.016521031036973, 0.005472331773489714, 0.017505912110209465, -0.058870911598205566, -0.00823277235031128, -0.005753230769187212, -0.0002548899792600423, 0.012782645411789417, 0.005735891405493021, 0.007029414642602205, 0.009176039136946201, 0.025925951078534126, -0.010889177210628986, 0.00608268054202199, -0.021223491057753563, -0.004608826711773872, -0.005902349948883057, 5.678671004716307e-05, -0.018171748146414757, 0.014155929908156395, -0.009606057778000832, 0.0033499824348837137, -0.020238609984517097, -0.012969911098480225, 0.029185768216848373, -0.027729254215955734, 0.02433072216808796, -0.005586771760135889, 0.030545182526111603, -0.013885434716939926, 0.029546428471803665, 0.0074004787020385265, -0.020183123648166656, -0.014995159581303596, -0.019031783565878868, -0.0026546702720224857, -0.008378423750400543, -0.0014218351570889354, 0.05354423448443413, -0.01128451619297266, 0.000919857993721962, 0.012449727393686771, -0.027646025642752647, -0.04058819264173508, 0.004185744095593691, -0.010181726887822151, -0.01837982051074505, 0.031460706144571304, -0.029158025979995728, -0.013164113275706768, 0.01757526956498623, 0.04477740451693535, 0.018629509955644608, -0.0066826255060732365, -0.017006536945700645, 0.0135802598670125, -0.03631575033068657, -0.005160221364349127, -0.03390210121870041, 0.006599396001547575, -0.0005487937014549971, -0.03248719871044159, 0.00010745042527560145, -0.008565690368413925, -0.0007234886870719492, -0.0003216468612663448, 0.01140936091542244, 0.01692330650985241, 0.005468863528221846, -0.008302130736410618, -0.032570429146289825, -0.015882939100265503, -0.010833690874278545, 0.011145801283419132, 0.0006567318341694772, 0.013933984562754631, 0.008468588814139366, -0.0022142482921481133, -0.008433910086750984, -0.00914829596877098, 0.038313258439302444, -0.01772785745561123, 0.00801082793623209, -0.034484706819057465, -0.02865864895284176, -0.03132198750972748, 0.01173534244298935, -0.018601765856146812, -0.001505931606516242, 0.0019177435897290707, 0.02750730887055397, -0.007050221785902977, -0.008926350623369217, -0.012928296811878681, 0.007324185222387314, -0.02266613394021988, -0.003148844698444009, 0.003320505376905203, -0.014523526653647423, 0.014301581308245659, 0.007837433367967606, 0.005187964532524347, 0.002101541729643941, 0.019725361838936806, 0.0013932251604273915, 0.035039566457271576, -0.02034958265721798, -0.026522427797317505, -0.008704406209290028, -0.014634499326348305, 0.015480664558708668, -0.003838954959064722, -0.001011757180094719, -0.01692330650985241, -0.0175891425460577, 0.008947158232331276, 0.023304225876927376, -0.03476213663816452, 0.005468863528221846, 0.015938425436615944, -0.0013923580991104245, 0.01607714220881462, 0.036648668348789215, 0.008080185391008854, -0.01738106831908226, -0.02976837381720543, -0.005146349780261517, -0.009328626096248627, -0.01131225936114788, 0.04866144433617592, 0.012102938257157803, -0.033125292509794235, 0.004175340291112661, -0.023748116567730904, 0.010022204369306564, -0.011402424424886703, -0.01023027766495943, -0.021487051621079445, -0.007684845943003893, -0.009023452177643776, -0.02322099730372429, -0.022180629894137383, 0.010799012146890163, -0.016437802463769913, 0.036454468965530396, -0.009293947368860245, -0.016007782891392708, -0.00043153564911335707, 0.01621585711836815, 0.004875854589045048, -0.02463589608669281, 0.002687615342438221, 0.00012072594836354256, 0.04891113191843033, 0.006308093201369047, 0.02649468556046486, -0.01060480996966362, 0.012241654098033905, 0.018365949392318726, -0.005271194037050009, 0.00677625834941864, -0.005038845352828503, 0.007081432733684778, 0.028200887143611908, 0.007823561318218708, -0.001256243442185223, -0.003877101931720972, 0.018171748146414757, -0.017603013664484024, 0.007071029394865036, 0.01783883012831211, 0.011423232033848763, 0.006568185053765774, -0.015952296555042267, 0.005933560896664858, 0.05193513259291649, -0.018962426111102104, -0.018268847838044167, -0.016285214573144913, 0.020474426448345184, -0.006027194205671549, -0.003904844867065549, 0.026772117242217064, 0.009425726719200611, 0.01287281047552824, -0.02005827985703945, 0.008572625927627087, 0.03320852294564247, -0.01636844500899315, 0.020086023956537247, 0.0213067214936018, 0.012553764507174492, -0.0019056060118600726, -0.004529065452516079, -0.038008082658052444, -0.016909435391426086, 0.0010568397119641304, -0.01168679166585207, -0.0008387960842810571, -0.01713138073682785, 0.014717727899551392, -0.005517414305359125, 0.004640037659555674, 0.0066097998060286045, -0.023956188932061195, -0.0030794870108366013, -0.009592185728251934, -0.012130681425333023, -0.015619379468262196, -0.007240955717861652, 0.04347347840666771, 0.03542797267436981, -0.0217644814401865, 0.004085175227373838, -0.0025679729878902435, -0.011749213561415672, 0.0028384686447679996, -0.0015302067622542381, 0.0008452983456663787, -0.008087120950222015, 0.02009989507496357, 0.005434184800833464, 0.009966718032956123, -0.02312389574944973, 0.005406441632658243, 0.03656544163823128, -0.04583164304494858, 0.019628262147307396, -0.020335711538791656, 0.0030742851085960865, -0.015536150895059109, -0.03537248447537422, 0.012241654098033905, 0.021584151312708855, 0.039422981441020966, -0.02277710661292076, -0.013177984394133091, -0.029102539643645287, -0.013774462044239044, -0.049687936902046204, -0.014898058958351612, -0.020474426448345184, -0.018879197537899017, -0.0037037073634564877, -0.003807744011282921, 0.037702906876802444, -0.027271492406725883, 0.01602165587246418, -0.029740631580352783, -0.021126389503479004, 0.008066314272582531, -0.00379040464758873, -0.01869886741042137, 0.014828700572252274, 0.007705653086304665, -0.004640037659555674, 0.010923855938017368, -0.0038181478157639503, 0.005891946144402027, 0.0029910558369010687, 0.05054797604680061, -0.0008752089343033731, 0.03134973347187042, 0.00759468087926507, -0.014135122299194336, -0.024067161604762077, 0.010812883265316486, 3.714436024893075e-05, 0.0030881566926836967, -0.005534753669053316, 0.00048377076745964587, -0.021903198212385178, 0.021043160930275917, -0.019017912447452545, -0.0023859087377786636, -0.017353326082229614, 0.007331121247261763, 0.007344992831349373, -0.004237762652337551, 0.011201286688446999, 0.027174392715096474, 0.0020304499194025993, -0.007955341599881649, 0.016285214573144913, 0.016340700909495354, 0.014107379131019115, -0.0012050920631736517, 0.0043175239115953445, 0.003164450405165553, -0.01559163723140955, -0.003981138579547405, -0.010140112601220608, 0.005021505989134312, -0.003199129132553935, 0.002561037428677082, -0.011055635288357735, -0.0032147346064448357, -0.0022645327262580395, -0.0038493587635457516, 0.00934249721467495, -0.01697879284620285, 0.020668629556894302, -0.012262461706995964, 0.025065913796424866, -0.01707589440047741, -0.00569427665323019, -0.021487051621079445, -0.04036624729633331, -0.012311012484133244, 0.018504664301872253, -0.020821215584874153, 0.011492589488625526, -0.002774312626570463, 0.015882939100265503, -0.014828700572252274, -0.010438350960612297, -0.038757145404815674, -0.010160920210182667, -0.02488558366894722, 0.008856993168592453, 0.026189511641860008, 0.020335711538791656, -0.022693876177072525, -0.014468040317296982, -0.002491679508239031, 0.016091013327240944, 0.001414899481460452, -0.01546679250895977, -0.022693876177072525, 0.009051194414496422, 0.0009788121096789837, -0.02614789642393589, 0.0061936527490615845, 0.0009909498039633036, -0.013080883771181107, 0.07396317273378372, 0.002982386155053973, -0.005902349948883057, 0.013080883771181107, -0.027188263833522797, -0.0351782850921154, 0.01546679250895977, 0.01090304832905531, 0.028284117579460144, 0.014662242494523525, 0.013143305666744709, 0.004792625084519386, 0.0035753953270614147, 0.01793593168258667, -0.007816625759005547, -0.006127763073891401, -0.017103636637330055, 0.015133875422179699, 0.006512698717415333, 0.020890573039650917, -0.011166607961058617, 0.019725361838936806, -0.025107529014348984, 0.02287420816719532, 0.009002644568681717, -0.01929534412920475, -0.01944793201982975, -0.018712738528847694, -0.050298288464546204, -0.028686393052339554, 0.006960056722164154, 0.012858938425779343, -0.01636844500899315, -0.002822863170877099, -0.015633251518011093, 0.03270914405584335, -0.02161189541220665, 0.008600369095802307, -0.03359692543745041, -0.0020495234057307243, -0.007851304486393929, 0.017561398446559906, 0.020932188257575035, -0.022707749158143997, -0.005500074941664934, -0.013469287194311619, 0.0061208270490169525, -0.028339603915810585, -0.005406441632658243, 0.006339304149150848, 0.008940222673118114, -0.01214455347508192, -0.022041913121938705, 0.0075114513747394085, 0.005399506073445082, 0.005142882000654936, 0.004608826711773872, 0.029990319162607193, -0.01707589440047741, -0.007428221870213747, 0.01657651737332344, -0.00039837395888753235, -0.024372335523366928, -0.001724408706650138, 0.010438350960612297, 0.03007354773581028, 0.03567766025662422, -0.028852850198745728, -0.00018455680401530117, 0.0007928465493023396, 0.008225836791098118, 0.012047452852129936, 0.009106680750846863, 0.006918441969901323, -0.002193440916016698, -0.0048064966686069965, 0.012990718707442284, -0.019267601892352104, 0.016895564272999763, -0.014634499326348305, -0.020086023956537247, -0.0011114589869976044, 0.011991966515779495, 0.026134025305509567, -0.0056353225372731686, 0.0028904869686812162, -0.0017625554464757442, -0.014315453357994556, -0.0008877800428308547, 0.007081432733684778, -0.02584272250533104, -0.001943752751685679, 0.010535452514886856, 0.0018986702198162675, -0.017353326082229614, -0.0056526619009673595, 0.007664038334041834, -0.0028800831642001867, -0.035289257764816284, -0.02982386015355587, 0.003460954874753952, 0.006186717189848423, 0.0026824134401977062, 0.005042313132435083, 0.0029719823505729437, -0.024205876514315605, 0.007539194542914629, 0.008274387568235397, 0.0008210231317207217, -0.006387854926288128, -0.010646424256265163, -0.008211965672671795, 0.02689696103334427, 0.01919824257493019, 0.007677909918129444, -0.013372186571359634, -0.0014755874872207642, 0.0022263857536017895, 0.005042313132435083, 0.00571855204179883, -0.004303652327507734, 0.02937997132539749, 0.002639064798131585, 0.003327441168949008, 0.0007958809146657586, 0.01201277319341898, -0.02348455600440502, -0.026675015687942505, 0.027521181851625443, -0.009841874241828918, -0.009307818487286568, 0.0030448080506175756, 0.003337844740599394, -0.019253728911280632, -0.004875854589045048, 0.00021273343008942902, 0.0007122180541045964, -0.011631305329501629, 0.009696222841739655, -0.012810388579964638, -0.005070056300610304, 0.024164263159036636, 0.007386607117950916, 0.004123322200030088, 0.009287011809647083, 0.022582905367016792, -0.019739234820008278, 0.0026373309083282948, -0.0012631792342290282, 0.0013282021973282099, -0.029352227225899696, 0.0037383863236755133, 0.0016862618504092097, -0.0021310187876224518, -0.008343745023012161, -0.008995709009468555, 0.0038597623351961374, 0.0037141109351068735, -0.0037141109351068735, 0.003271954832598567, -0.006883763242512941, 0.008933286182582378, -0.013836883939802647, -0.004723267164081335, 0.00413025775924325, -0.013878499157726765, -0.007775011006742716, 0.017242353409528732, -0.019461803138256073, 0.0019732299260795116, -0.014301581308245659, 0.027535052970051765, -0.0061416346579790115, -0.025884335860610008, 0.004348734859377146, 0.000816688290797174, -0.0037938724271953106, 0.009786387905478477, 0.011991966515779495, 0.013933984562754631, -0.035899605602025986, -0.009668479673564434, 0.010826755315065384, 0.0012302342802286148, -0.013240407221019268, 0.005923157557845116, 0.031821366399526596, 0.032071053981781006, -0.013899305835366249, 0.005430717021226883, -0.02105703204870224, 0.023193253204226494, -0.0021119455341249704, -0.02342906966805458, 0.015827452763915062, -0.00040791064384393394, -0.020737987011671066, -0.004945212043821812, 0.02624499797821045, -0.016104884445667267, 0.02292969450354576, -0.010584002360701561, 0.017103636637330055, -0.02181996777653694, -0.04452771693468094, 0.001152206677943468, 0.007823561318218708, 0.02987934648990631, 0.018227234482765198, -0.008621176704764366, 0.018712738528847694, -0.002101541729643941, 0.00243619317188859, 0.024566538631916046, 0.03451244905591011, -0.010091561824083328, -0.011811635456979275, -0.033929843455553055, 0.015633251518011093, -0.011520332656800747, 0.008974901400506496, -0.02009989507496357, 0.01244279183447361, -0.024649767205119133, -0.015092260204255581, 0.028089914470911026, 0.012373434379696846, 0.004834239836782217, 0.013420737348496914, 0.024497179314494133, 0.012609250843524933, -0.007781947031617165, 0.011201286688446999, -0.014676113612949848, -0.017755599692463875, 0.004272441379725933, 0.012401177547872066, 0.04114305600523949, 0.018962426111102104, 0.02689696103334427, -0.013989470899105072, -0.012054388411343098, -0.0211541336029768, 0.0015302067622542381, -0.01052851602435112, -0.0002117580734193325, 0.020335711538791656, 0.002401514444500208, -0.030711639672517776, 0.004490918479859829, -0.0012293672189116478, -0.015452921390533447, 0.010410607792437077, -0.0022575969342142344, -0.004542937036603689, -0.013309764675796032, -0.015827452763915062, 0.009300882928073406, 0.0011496057268232107, -0.0019368169596418738, -0.011839378625154495, 0.04097659885883331, 0.016548775136470795, 0.01939244568347931, -0.020779602229595184, 0.01596616953611374, -0.013295893557369709, -0.008974901400506496, 0.02222224324941635, 0.004834239836782217, -0.02735472284257412, -0.018005289137363434, -0.004227358847856522, 0.024011675268411636, 0.008808442391455173, -0.0006090482929721475, 0.015688737854361534, -0.018518537282943726, -0.007240955717861652, -0.005583303980529308, -0.019364701583981514, 0.06991267949342728, 0.011749213561415672, -0.024899454787373543, 0.007892919704318047, 0.02222224324941635, 0.016659747809171677, -0.006152037996798754, 0.003310101805254817, -0.012234718538820744, -0.002134486800059676, 0.003908312879502773, -0.021445436403155327, -0.03229299932718277, -0.008149542845785618, 0.006131230853497982, -0.030212264508008957, -0.017492040991783142, -0.04533226788043976, -0.009280075319111347, 0.02211127057671547, 0.033347237855196, -0.004490918479859829, 0.0003890539810527116, -0.002588780364021659, -0.0017963674617931247, -0.0074559650383889675, 0.01294910442084074, -0.02237483114004135, -0.007761139422655106, 0.009280075319111347, 0.003308367682620883, -0.0345679335296154, 0.014967416413128376, -0.020224738866090775, -0.01025108527392149, 0.01503677386790514, -0.0015154682332649827, -0.011423232033848763, 0.02291582152247429, -0.011194351129233837, 0.009751709178090096, -0.031155530363321304, -0.009682350791990757, 0.02523237280547619, -0.028270244598388672, -0.021986426785588264, -0.02901930920779705, -0.007351928390562534, -0.020377326756715775, -0.017492040991783142, -0.01566099375486374, 0.001681927009485662, -0.007823561318218708, 0.023651015013456345, -0.008475525304675102, 0.03268140181899071, 0.0019368169596418738, 0.003516441211104393, 0.02322099730372429, -0.020571528002619743, -0.010854498483240604, -0.009640736505389214, -0.0034574870951473713, 0.019780848175287247, -0.0002525057934690267, 0.014051893725991249, 0.017297839745879173, 0.0021604958456009626, 0.0012519086012616754, 0.017214609310030937, 0.00010376579302828759, -0.011423232033848763, 0.007449029479175806, -0.01919824257493019, -0.0018015692476183176, -0.007809689734131098, 0.00838536024093628, -0.002625193214043975, 0.00798308476805687, 0.016798462718725204, 0.007289506494998932, -0.017408812418580055, 0.005728955380618572, -0.00793453399091959, -0.00324421189725399, -0.0002776480105239898, 0.00685255229473114, -0.0047128633596003056, -0.02453879453241825, 0.027340849861502647, -0.015314205549657345, 0.0026546702720224857, 0.023456813767552376, -0.0012415049131959677, 0.0015770233003422618, 0.03437373414635658, 0.016312958672642708, -0.007240955717861652, 0.004927872680127621, -0.028089914470911026, -0.020682500675320625, 0.004438899923115969, -0.0121931042522192, -0.011541140265762806, -0.02987934648990631, -0.007712589111179113, -0.014828700572252274, 0.00531627656891942, -0.010056883096694946, 0.036038320511579514, 0.009106680750846863, -0.004820368252694607, -0.028630906715989113, -0.0001608234306331724, -0.0005769703420810401, 0.02180609665811062, -0.023706501349806786, -0.005208771675825119, 0.008205029182136059, 0.0016411793185397983, -0.0010689772898331285, 0.009099745191633701, 0.006876827217638493, -0.00944653432816267, 0.020737987011671066, -0.011187415570020676, -0.015175489708781242, 0.018449177965521812, -0.009675415232777596, 0.005954368505626917, -0.0016481151105836034, -0.05101960897445679, -0.008066314272582531, 0.009196845814585686, 0.005076991859823465, 0.03601057827472687, 0.01506451703608036, -0.0074767726473510265, -0.008100992999970913, 0.013157177716493607, -0.005957836285233498, 0.02699406072497368, 0.0016108351992443204, -0.013878499157726765, 0.011423232033848763, 0.004258569795638323, 0.026286611333489418, -0.008773763664066792, 0.01400334294885397, -0.0074212863110005856, 0.02982386015355587, -0.024164263159036636, -0.008836185559630394, 0.011846315115690231, 0.006217928137630224, 0.00758080929517746, -0.008454717695713043, 0.003894441295415163, -0.00038233495433814824, -0.010313507169485092, -0.012761837802827358, -0.02790958434343338, -0.0021258171182125807, -0.022652262821793556, -0.010479966178536415, -0.007837433367967606, 0.001650715945288539, 0.01131225936114788, 0.01621585711836815, 0.0070051392540335655, 0.00751838693395257, -0.0012449728092178702, 0.003731450531631708, 0.024316849187016487, 0.00534055195748806, 0.02413651905953884, 0.010348185896873474, -0.026217253878712654, 0.020418940111994743, -0.014259967021644115, 0.007941469550132751, 0.006887231022119522, 0.01768624223768711, -0.005541689228266478, 0.01718686707317829, 0.015397435054183006, -0.0017044682754203677, 0.0056700012646615505, 0.00228013820014894, 0.011978094466030598, -0.009196845814585686, -0.027992814779281616, -0.0008981837308965623, -0.002163963858038187, -0.0035008357372134924, -0.006887231022119522, -0.003185257548466325, 0.03132198750972748, -0.008531011641025543, 0.003055211855098605, 0.014565140940248966, -0.03129424527287483, -0.00021880223357584327, 0.00720627699047327, 0.08017763495445251, 0.01632682979106903, 0.022555161267518997, -0.005611047148704529, -0.010486901737749577, 0.0058537996374070644, -0.014537397772073746, -0.04363993555307388, -0.009113617241382599, 0.009196845814585686, -0.015480664558708668, 0.009328626096248627, -0.02660565823316574, -0.009328626096248627, -0.008322937414050102, 0.010507709346711636, -0.012255526147782803, 0.009987525641918182, 0.029296740889549255, -0.0024049822241067886, -0.016590388491749763, 0.011520332656800747, -0.002528092358261347, -0.020627014338970184, -0.019919564947485924, -0.017741728574037552, 0.008302130736410618, -0.019253728911280632, 0.010764332488179207, 0.0023859087377786636, 0.009862680919468403, -0.01163824088871479, -0.02095993235707283, -0.004286312963813543, 0.004418092779815197, 0.008094057440757751, -0.014620627276599407, -0.0014279040042310953, -0.0013611471513286233, 0.009987525641918182, -0.015106132254004478, 0.013899305835366249, 0.01297684758901596, -0.023859089240431786, -0.005146349780261517, -0.00012256826448719949, -0.006523102521896362, -0.004716331604868174, -0.014523526653647423, 0.01352477353066206, 0.021168004721403122, 0.016285214573144913, 0.012248589657247066, 0.021195748820900917, -0.0031297714449465275, -0.011083378456532955, 0.01954503171145916, -0.0017374132294207811, 0.02272162027657032, -0.006200588773936033, -0.011645177379250526, 0.0071715982630848885, -0.007185469847172499, 0.0036100742872804403, -0.002743101678788662, 0.012630058452486992, -0.0016983995446935296, -0.010916920378804207, 0.011111121624708176, -0.030545182526111603, 0.01768624223768711, 0.007650167215615511, 0.021584151312708855, -0.0033066337928175926, 0.01950341835618019, 0.004102514591068029, -0.003273688955232501, 0.010916920378804207, 0.016715234145522118, -0.002869679592549801, 0.0013203993439674377, -0.011152736842632294, -0.006342772394418716, 0.015980040654540062, -0.02236096002161503, -0.01106257177889347, 0.02247193269431591, 0.0398113839328289, -0.015550022013485432, -0.0003753991622943431, -0.007490644231438637, -0.00758080929517746, 0.011381617747247219, 0.005271194037050009, -0.009203782305121422, -0.011215158738195896, 0.004504790063947439, -0.015841325744986534, -0.0012631792342290282, 0.02846444770693779, 0.006783194374293089, 0.013462351635098457, -0.0006914107361808419, -0.00323034031316638, -0.00017718753952067345, -0.007053689565509558, 0.0060202581807971, 0.003344780532643199, -0.003942991606891155, -0.016035526990890503, -0.010639488697052002, 0.004945212043821812, -0.010639488697052002, -0.012179232202470303, -0.029185768216848373, -0.00015887274639680982, -0.017769472673535347, 0.013545581139624119, -0.00719240540638566, 0.0026425328105688095, -0.010112369433045387, -0.010195598937571049, 0.008371488191187382, -0.03437373414635658, -0.029435455799102783, -0.00022627986618317664, -0.0033673217985779047, 0.0037210467271506786, -0.012394241988658905, -0.007816625759005547, -0.009578314609825611, 0.00415800092741847, -0.02739633619785309, -0.0002444862911943346, 0.008253579959273338, 0.0009848809568211436, -0.01276877336204052, 0.004161468707025051, -0.007664038334041834, 0.008024699054658413, 0.024150392040610313, 0.007920662872493267, -0.004754478111863136, -0.015452921390533447, 0.0005297203315421939, -0.013094755820930004, -0.014828700572252274, -0.0015406104503199458, -0.006984332110732794, -0.02402554638683796, -0.023345841094851494, -0.011957286857068539, -0.01632682979106903, -0.010542388074100018, 0.014246094971895218, -0.016257472336292267, -0.013698168098926544, 0.0013091287110000849, -0.006478019990026951, 0.003741854103282094, -0.008024699054658413, -0.02714664861559868, 0.011104186065495014, -0.029934832826256752, -0.012269397266209126, -0.01642393134534359, 0.021847711876034737, -0.0034661567769944668, 0.021278977394104004, 0.020474426448345184, -0.009536699391901493, -0.02095993235707283, 0.026924703270196915, 0.00021457574621308595, -0.029601914808154106, 0.008274387568235397, 0.005576368421316147, -0.03204331174492836, 0.002333890413865447, 0.017741728574037552, -0.0010169589659199119, 0.005541689228266478, 0.013067012652754784, 0.006793598178774118, -0.012151489034295082, -0.0047128633596003056, -0.012248589657247066, -0.0018639912595972419, -0.016354572027921677, -0.007310313638299704, -0.017353326082229614, 0.016534902155399323, -0.001042101182974875, -0.018074646592140198, -0.0075669377110898495, -0.013316700235009193, -0.008565690368413925, 0.0012787847081199288, -0.03656544163823128, -0.003686367766931653, -0.0012163626961410046, 0.009287011809647083, -0.004927872680127621, -0.0005409909645095468, 0.02322099730372429, -0.007074497174471617, 0.00946734193712473, -0.02181996777653694, 0.02025248110294342, -0.0009736103238537908, -0.039312008768320084, 0.011943415738642216, 0.013559453189373016, -0.017797214910387993, -0.0015015966491773725, 0.013712040148675442, -0.0016481151105836034, 0.011194351129233837, -0.01052851602435112, 0.0003829851921182126, -0.011076442897319794, 0.005305872764438391, -0.00420655170455575, -0.020141510292887688, 0.007587744854390621, 0.002193440916016698, 0.009266204200685024, -0.011166607961058617, -0.00453253323212266, -0.01125677302479744, 0.005954368505626917, -0.007365799974650145, 0.014509654603898525, 0.028145400807261467, 0.020946059376001358, 0.0022593308240175247, 0.015536150895059109, 0.014259967021644115, 0.01939244568347931, -0.013455416075885296, -0.0174365546554327, -0.002680679550394416, -0.002247193129733205, -0.000271362456260249, 0.010542388074100018, 0.0018154408317059278, -8.572192746214569e-05, 0.007747267838567495, 0.00785824004560709, -2.0983448848710395e-05, -0.0028055235743522644, -0.008426974527537823, -0.0021951748058199883, 0.0047856890596449375, -0.007761139422655106, 0.02025248110294342, 0.006835212465375662, -0.003516441211104393, 0.0049521480686962605, 0.006599396001547575, -0.019212115556001663, 0.005503542721271515, 0.00017610382928978652, -0.005531285889446735, -0.0002945539599750191, 0.00493827648460865, 0.0013247343013063073, -0.020432813093066216, -0.01747816987335682, 0.02951868623495102, -0.02000279352068901, -0.005021505989134312, -0.0017200738657265902, 0.0016056334134191275, 0.020127637311816216, 0.004216955043375492, -0.00717853382229805, 0.01969761960208416, -0.0010637755040079355, -0.016340700909495354, -0.009945910423994064, -0.0031835236586630344, -0.008440845645964146, -0.01478708628565073, -0.005413377657532692, -0.004671248607337475, 0.02946319989860058, 0.012290204875171185, 0.016493288800120354, 0.0008830116712488234, -0.014287710189819336, 0.013254278339445591, -0.005229579284787178, -0.005437652580440044, -0.004060899838805199, -0.009578314609825611, -0.02528785914182663, -0.018976297229528427, -0.011756150051951408, 0.035649918019771576, -0.002713624620810151, 0.0022090463899075985, 0.009300882928073406, 0.003337844740599394, -0.010743525810539722, -0.00282806484028697, 0.008329873904585838, -0.0026529363822191954, -0.011853250674903393, -0.019836334511637688, -0.016229728236794472, -0.018074646592140198, 0.018629509955644608, 0.013136370107531548, -0.01929534412920475, -0.0012787847081199288, -0.006339304149150848, -0.0028020557947456837, 0.0006515299901366234, 0.006245671305805445, 0.018060775473713875, 0.004255102016031742, -0.02197255566716194, -0.018629509955644608, -0.01030657161027193, 0.006793598178774118, 0.001627307734452188, -0.013843819499015808, -0.0219170693308115, -0.025759492069482803, 0.010140112601220608, 0.006509230937808752, -0.034540191292762756, 0.009626864455640316, -0.008482460863888264, 0.02714664861559868, -0.02140382118523121, -0.01602165587246418, -0.014911930076777935, 0.015688737854361534, -9.861814032774419e-05, -0.005267726257443428, 0.01481482945382595, 0.0012042251182720065, -0.005295468959957361, 0.0007447295356541872, -0.020585399121046066, -0.015896812081336975, -0.012671672739088535, -0.0032702209427952766, 0.011208223178982735, -0.000415930146118626, -0.008558754809200764, -0.004241230431944132, 0.006724240258336067, 0.0019524224335327744, 0.01854627951979637, 0.003053477732464671, 0.0008921148837544024, -0.011978094466030598, 0.006263010669499636, 0.0007031148415990174, 0.0066271391697227955, 0.012477470561861992, -0.0032130007166415453, -0.007795818615704775, -0.01636844500899315, 0.022139014676213264, 0.0035303127951920033, -0.0014643168542534113, -0.01948954537510872, -0.01596616953611374, -0.025676263496279716, -0.016992663964629173, -0.012609250843524933, 0.004314056131988764, -0.013587196357548237, 0.02555141970515251, 0.010396736674010754, -0.019822463393211365, 0.025704005733132362, 0.018171748146414757, -0.006315029226243496, -0.01853240840137005, -0.015841325744986534, 0.008773763664066792, 0.0056700012646615505, 0.011839378625154495, 0.006887231022119522, -0.008954093791544437, -0.013843819499015808, 0.011326131410896778, -0.002200376708060503, -0.015841325744986534, 0.0019905692897737026, -0.006148570217192173, 0.008704406209290028, 0.004761414136737585, 0.03248719871044159, 0.014468040317296982, 0.0030205328948795795, -0.017200738191604614, 0.011679856106638908, -0.0070259468629956245, 0.007698717527091503, 0.008531011641025543, -0.0038424229715019464, 0.009730901569128036, 0.00947427749633789, -0.0013672158820554614, 0.007525322958827019, -0.005923157557845116, -0.02236096002161503, -0.00600638659670949, -0.012276332825422287, 0.003247679676860571, -0.00952282827347517, 0.0019940370693802834, 0.006831744685769081, -0.0014452434843406081, 0.01647941768169403, 0.024247491732239723, -0.0020165785681456327, -0.003526844782754779, -0.004588019568473101, -0.0013576792553067207, -0.010729653760790825, 0.00934249721467495, 0.011548075824975967, -0.009557507000863552, 0.0026824134401977062, -0.01060480996966362, 0.00375225767493248, -0.006758918985724449, -0.003564991755411029, -0.005090863443911076, 0.0074004787020385265, -0.002651202492415905, -0.011582755483686924, -0.00045429368037730455, -0.03653769567608833, -0.013684296980500221, -0.01174227800220251, 0.004744074307382107, -0.014169801957905293, 0.01813013292849064, 0.010327378287911415, 0.018310463055968285, -0.004477046895772219, 0.00643640523776412, -0.008378423750400543, -0.005333615932613611, -0.0012579773319885135, -0.009231525473296642, -0.0010282295988872647, -0.007657102774828672, -0.019281473010778427, 0.015758095309138298, -0.004636569879949093, 0.03384661301970482, 0.011187415570020676, 0.0013646150473505259, 0.00751838693395257, 0.01661813259124756, 0.01516161859035492, -0.0082605155184865, 0.009599121287465096, 0.007872112095355988, -0.0002871846954803914, 0.001834514201618731, 0.03531700000166893, -0.002808991586789489, -0.018754353746771812, -0.002784716198220849, -0.004581083543598652, 0.0026286612264811993, 0.004612294491380453, 0.010188663378357887, 0.021736739203333855, -0.01778334379196167, 0.02388683147728443, 0.006595928221940994, -0.0074767726473510265, -0.014121251180768013, -0.003613542066887021, -0.01950341835618019, -0.007816625759005547, 0.014662242494523525, -0.013642681762576103, -0.0025142207741737366, -0.00419268012046814, 0.02030796743929386, 0.019877949729561806, 0.008371488191187382, -0.005995983257889748, -0.0039603314362466335, -0.0015120003372430801, 0.003845890751108527, -0.014246094971895218, 0.016243599355220795, -0.015855196863412857, 0.003266753163188696, 0.015577765181660652, 0.006367047317326069, 0.0018986702198162675, 0.01023027766495943, -0.010833690874278545, 0.0052746618166565895, -0.01052851602435112, 0.015938425436615944, -0.0021500922739505768, -0.010438350960612297, 0.01607714220881462, 0.0021362206898629665, -0.02059927023947239, 0.007046754006296396, -0.00801082793623209, -0.014565140940248966, -0.01611875556409359, 0.01627134345471859, -0.005045780912041664, 0.009536699391901493, 0.008253579959273338, 0.046220049262046814, -0.02901930920779705, 0.011346938088536263, 0.014800957404077053, -0.032570429146289825, -0.001206825952976942, 3.234891846659593e-05, 0.006686093285679817, -0.0020564591977745295, -0.017852701246738434, 0.013725911267101765, -0.004348734859377146, -0.027978941798210144, 0.013087819330394268, -0.022194501012563705, -0.009377176873385906, 0.015647122636437416, 0.003877101931720972, 0.0003602271608542651, -0.013413801789283752, -0.004383414052426815, -0.028936080634593964, -0.03098907135426998, 0.004296716768294573, 0.013531710021197796, -0.01516161859035492, -0.015300334431231022, 0.015702608972787857, 0.0020443215034902096, 0.00043001846643164754, -0.027382465079426765, -0.013989470899105072, -0.015369691886007786, 0.018268847838044167, -0.02212514355778694, 0.02699406072497368, -0.007261763326823711, -0.0020894042681902647, 0.0031297714449465275, -0.027216006070375443, 0.00611042371019721, -0.015092260204255581, 0.003679431974887848, 0.00758080929517746, -0.005205303896218538, -0.00452212942764163, -0.01518936175853014, -0.007865176536142826, 0.018879197537899017, -0.014468040317296982, -0.01606326922774315, -0.00901651568710804, -0.0049521480686962605, 0.008919415064156055, -0.007123047485947609, -0.00947427749633789, -0.00487238634377718, -0.014842572622001171, 0.01244279183447361, -0.003523377003148198, -6.085064524086192e-05, -0.01954503171145916, 0.011298388242721558, 0.002821129048243165, 0.009037323296070099, 0.011145801283419132, 0.006356643512845039, 0.0012787847081199288, 0.0009866149630397558, 0.0007403946947306395, 0.004969487432390451, 0.005722019821405411, -0.019281473010778427, 0.0017166059697046876, 0.012304075993597507, 0.022610647603869438, 0.0026824134401977062, -0.024816226214170456, -0.00955057144165039, -0.0008179887081496418, 0.022291602566838264, -0.013413801789283752, 0.018199490383267403, 0.0401165597140789, 0.010473029688000679, -0.0098765529692173, 0.008329873904585838, 0.00866279099136591, 0.016257472336292267, -0.010459158569574356, 0.005586771760135889, -0.005531285889446735, -0.01914275623857975, 0.001749550923705101, 0.006145102437585592, 0.023664886131882668, 0.028339603915810585, -0.006696497090160847, 0.014481911435723305, -0.005819120444357395, 0.0041059828363358974, -0.01171453483402729, -0.00246220245026052, -0.021251235157251358, -0.011555012315511703, 0.008967965841293335, 0.007303378079086542, -0.002103275852277875, 0.004629634320735931, -0.01276877336204052, 0.0020252482499927282, -0.03376338258385658, -0.011922608129680157, 0.013642681762576103, -0.0061208270490169525, -0.009203782305121422, 0.026078538969159126, 0.014925802126526833, -0.04205857962369919, -0.017089765518903732, 0.006914974190294743, -0.010091561824083328, -0.018768224865198135, -0.0002733131404966116, 0.009862680919468403, 0.014176737517118454, -0.00643640523776412, 0.005787909496575594, -0.009404920041561127, 0.0026113216299563646, -0.0020373857114464045, -0.009030387736856937, 0.009980589151382446, -0.0018501196755096316, 0.013621875084936619, 0.002510752994567156, -0.003393331076949835, 0.013933984562754631, -0.0040504964999854565, -0.01138855330646038, 0.004379945807158947, -0.009432663209736347, -0.02595369517803192, -0.002602651948109269, -0.016895564272999763, -0.026758244261145592, -0.01478708628565073, -0.006599396001547575, -0.01251908577978611, -0.00836455263197422, 0.019281473010778427, 0.020169252529740334, 0.020169252529740334, 0.0011192617239430547, -0.016840077936649323, -0.00939798355102539, -0.008225836791098118, -0.007969212718307972, 0.010043011978268623, -0.005357891321182251, -0.011943415738642216, -9.543472515360918e-06, -0.00010755880066426471, 0.018865326419472694, 0.01166598405689001, 0.014828700572252274, -0.023040665313601494, 0.0028800831642001867, 0.004230826627463102, 0.01176308561116457, -0.012671672739088535, 0.007268698886036873, 0.0018189087277278304, 0.004650441464036703, -0.010896112769842148, 0.011797764338552952, -0.006911506410688162, -0.005167157389223576, 0.008121799677610397, 0.0127410301938653, 0.004848111420869827, 0.015133875422179699, -0.013205727562308311, -0.008094057440757751, -0.0008452983456663787, 0.017824959009885788, 0.002210780279710889, -0.01168679166585207, -0.011721470393240452, -0.043556708842515945, 0.01030657161027193, 0.013004590757191181, 0.00037149779382161796, -0.018254976719617844, 0.004754478111863136, -0.00415453314781189, -0.004310588352382183, 0.012553764507174492, 0.0025801106821745634, 0.022041913121938705, -0.01015398371964693, -0.02136220782995224, -0.006342772394418716, 0.008218901231884956, 0.0023911106400191784, 0.014703856781125069, -0.009862680919468403, 0.002760441042482853, 0.010216406546533108, 0.005569432396441698, 0.023165510967373848, -0.024358464404940605, 0.010375929065048695, 0.01014704816043377, -0.05099186673760414, 0.005486203357577324, -0.0007286905311048031, -0.020918317139148712, -0.019184371456503868, 0.012213910929858685, -0.022541290149092674, -0.010049947537481785, -0.015785839408636093, 0.0012232984881848097, 0.014468040317296982, 0.018463050946593285, -0.01098627783358097, -0.028492189943790436, 0.002923431806266308, 0.007157726678997278, -0.0003058246220462024, -0.02090444602072239, -0.009682350791990757, 0.012588443234562874, 0.0058364602737128735, 0.005392570048570633, 0.025676263496279716, -0.006013322621583939, 0.013920113444328308, -0.02478848397731781, 0.016853949055075645, 0.0047856890596449375, -0.01317104883491993, 0.00839229580014944, -0.013698168098926544, -0.0011686792131513357, 0.012852002866566181, 0.017353326082229614, 0.006880295462906361, 0.016659747809171677, -0.015050645917654037, 0.0012969911331310868, 0.004705927800387144, 0.008954093791544437, -0.013406865298748016, -0.02046055532991886, -0.02291582152247429, 0.003991542384028435, 0.009911231696605682, -0.005995983257889748, -0.011138864792883396, -0.015633251518011093, -0.01549453567713499, 0.003963799215853214, 0.01506451703608036, 0.003469624789431691, 0.00759468087926507, -0.02555141970515251, 0.013892370276153088, -0.013046205043792725, -0.014370939694344997, 0.020918317139148712, -0.00879457127302885, 0.002444863086566329, -0.00719240540638566, -0.003894441295415163, -0.010112369433045387, 0.009238461032509804, -0.02111251838505268, -0.010764332488179207, -0.0060861483216285706, -0.012248589657247066, 0.026383712887763977, -0.0003994576691184193, -0.006207524333149195, 0.0071715982630848885, -0.006256075110286474, -0.00678666215389967, 0.018851453438401222, -0.013829948380589485, 0.0025402300525456667, 0.011242901906371117, 0.014204480685293674, -0.036953844130039215, -0.011541140265762806, 0.005943964701145887, -0.012498278170824051, 0.017450425773859024, -0.003929120022803545, -0.005593707785010338, -0.020765729248523712, 0.0021310187876224518, 0.001724408706650138, 0.003356918226927519, 0.01478708628565073, 0.005579836200922728, -0.045970357954502106, -0.029407713562250137, -0.013940921053290367, -0.0098765529692173, 0.02553754672408104, -0.010438350960612297, -0.0007586011197417974, 0.0128936180844903, -0.027326978743076324, -0.0004711996589321643, 0.010237213224172592, 0.014197545126080513, 0.01516161859035492, -0.018601765856146812, 0.015882939100265503, 0.0197531059384346, 0.01506451703608036, 0.016285214573144913, -0.01015398371964693, 0.007990020327270031, 0.004792625084519386, 0.019128885120153427, -0.02865864895284176, 0.0028922208584845066, -0.033125292509794235, 0.006155506242066622, 0.013025397434830666, -0.010819818824529648, -0.001261445228010416, -0.0023321565240621567, -0.013712040148675442, -0.0024465969763696194, -0.009502020664513111, -0.0037002393510192633, 0.0019801657181233168, 0.026355968788266182, 0.0024760740343481302, -0.022444188594818115, 0.010833690874278545, -0.0060480013489723206, 0.011860186234116554, 0.000883445143699646, -0.011159672401845455, -0.008565690368413925, 0.0030569457449018955, -0.006363579537719488, 0.0065369741059839725, -0.003679431974887848, 0.012761837802827358, 0.002285340102389455, 8.97316713235341e-05, -0.03376338258385658, -0.010015268810093403, 0.005156753584742546, -0.0007577341166324914, 0.02428910695016384, 0.013864627107977867, -0.006568185053765774, -0.011839378625154495, 0.011118058115243912, 0.0035545879509299994, 0.0007334589026868343, 0.004681652411818504, -0.007143855094909668, -0.010001396760344505, 0.00828825868666172, 0.0034228081349283457, -0.003121101763099432, -0.007199340965598822, 0.010438350960612297, -0.020724115893244743, 0.0029771842528134584, 0.007879047654569149, 0.01757526956498623, 0.010341250337660313, -0.005160221364349127, -0.025273988023400307, 0.013885434716939926, -0.010077690705657005, -0.00788598321378231, -0.0007906790706329048, -0.0002525057934690267, 0.022888079285621643, 0.012151489034295082, -0.003091624705120921, -0.0031367072369903326, -0.008170350454747677, -0.012713287025690079, -0.02785409800708294, 0.012435856275260448, -0.012623121961951256, 0.005895414389669895, 0.01678459160029888, 0.024192005395889282, -0.005548625253140926, -0.01030657161027193, 0.01607714220881462, -0.00607227673754096, -0.010937727056443691, 0.007899855263531208, 0.017769472673535347, -0.02195868454873562, 0.007358863949775696, -0.02957417257130146, 0.0034886980429291725, -0.0011678121518343687, -0.013850755989551544, 0.014017214067280293, 0.00898877251893282, 0.008808442391455173, 0.019309215247631073, 0.024996556341648102, -0.01206132397055626, 0.0053856344893574715, -0.0065716528333723545, -3.3622283808654174e-05, 0.0017452159663662314, 0.02760441042482853, -0.0011955553200095892, -0.007372735533863306, -0.0038008082192391157, 0.014537397772073746, -0.0010316974949091673, -0.01828272081911564, 0.019475674256682396, -0.005215707700699568, -0.01577196642756462, 0.014107379131019115, -0.014086572453379631, 0.019309215247631073, 0.0009406653698533773, -0.008829250000417233, 0.010244149714708328, -0.016437802463769913, 0.007996955886483192, -0.011180480010807514, 0.02211127057671547, 0.01889306865632534, -0.014828700572252274, -0.021695123985409737, 0.020668629556894302, -0.02312389574944973, -0.00013145474076736718, -0.00838536024093628, -0.04150371626019478, 0.008961029350757599, -0.011014021001756191, 0.002028716029599309, 0.0008903809357434511, -0.005555560812354088, 0.021778354421257973, 0.008787634782493114, -0.0071507906541228294, -0.0035927349235862494, -0.008933286182582378, 0.015619379468262196, -0.03043420985341072, -0.014287710189819336, 0.013836883939802647, 0.027188263833522797, 0.008683598600327969, -0.011700663715600967, -0.006998203694820404, 0.006134698633104563, -0.021681252866983414, -0.0031176337506622076, 0.005472331773489714, 0.01174227800220251, 0.002346028108149767, 0.006245671305805445, 0.010119304992258549, 0.009203782305121422, -0.004636569879949093, 0.006356643512845039, 0.0015154682332649827, -0.009300882928073406, 0.018352078273892403, -0.008378423750400543, -0.004594955127686262, -0.004678184632211924, 0.0016195049975067377, 0.012838131748139858, -0.0019541564397513866, 0.005957836285233498, 0.0016784591134637594, -0.007407414726912975, 0.0015024637104943395, -0.02811765857040882, -0.006724240258336067, -0.003828551387414336, 0.0012163626961410046, 0.006332368589937687, -0.004470111336559057, 0.0012588443933054805, -0.011645177379250526, -0.01772785745561123, -0.023082280531525612, 0.0030240006744861603, -0.012227782979607582, -0.004248165991157293, -0.004310588352382183, 0.002621725434437394, -0.009280075319111347, -0.01772785745561123, -0.00914829596877098, -0.00020330509869381785, -0.01556389406323433, -0.014925802126526833, 0.011069507338106632, 0.02180609665811062, 0.01647941768169403, 0.01646554470062256, -0.009883488528430462, -0.0026564043946564198, -0.006512698717415333, 0.0024205876979976892, -0.005531285889446735, 0.011776956729590893, 0.0026477344799786806, -0.024011675268411636, -0.010140112601220608, -0.010694975033402443, -0.0070051392540335655, 0.021625766530632973, -0.0003006227780133486, -0.00939798355102539, -0.002515954663977027, -0.015355819836258888, 0.0026355970185250044, 0.00531627656891942, -0.005510478280484676, -0.018504664301872253, 0.04031076282262802, -0.009543634951114655, 0.0040678358636796474, 0.0009224589448422194, 0.005194900557398796, -0.031016815453767776, 0.023942317813634872, 0.0135802598670125, 0.005787909496575594, -0.0005453258054330945, 0.014579012989997864, -0.011249837465584278, 0.013386058621108532, 0.007462901063263416, 0.0327368900179863, 0.010715782642364502, -0.008073249831795692, -0.007435157895088196, -0.009259268641471863, 0.006911506410688162, 0.0017928995657712221, -0.012352626770734787, -0.005701212212443352, -0.010389801114797592, 0.016451673582196236, -0.012179232202470303, 0.013080883771181107, -0.00565612968057394, -0.018463050946593285, -0.01241504866629839, -0.03204331174492836, -0.0007729061762802303, 0.024205876514315605, 0.017200738191604614, -0.02292969450354576, -0.015730353072285652, 0.018726609647274017, -0.010140112601220608, -0.0032268723007291555, -0.013774462044239044, 0.020030537620186806, -0.0035441843792796135, -0.010313507169485092, 0.019739234820008278, 0.0024153857957571745, -0.004095579031854868, 0.00904425885528326, -0.03168265148997307, 0.022999051958322525, -0.00342627614736557, -0.03173813596367836, 0.0001964776893146336, 0.0034592209849506617, -0.013642681762576103, 0.008551818318665028, 0.002444863086566329, -0.007761139422655106, -0.008135671727359295, -0.005645726341754198, 0.015980040654540062, -0.0084131034091115, -0.029685145244002342, 0.0022159821819514036, 0.00788598321378231, -0.0172839667648077, 0.004678184632211924, 0.01023027766495943, 0.0022888078819960356, 0.005774037912487984, -0.00906506646424532, 0.01837982051074505, 0.01330282911658287, 0.004064368084073067, -0.016964921727776527, 0.00011530736810527742, 0.01964213326573372, -0.008759891614317894, -0.0035251108929514885, 0.0019766977056860924, 0.013538645580410957, -0.0004278510168660432, -0.011541140265762806, -0.013434608466923237, -0.010812883265316486, 0.013996407389640808, 0.006679157726466656, 0.010355121456086636, 0.006908038165420294, 0.0015882939333096147, 0.013032332994043827, 0.005167157389223576, 0.02120961993932724, 0.020266354084014893, 0.01808851771056652, 0.006904570385813713, 0.016701361164450645, -0.03717578947544098, -0.009099745191633701, -0.003651689039543271, 0.003942991606891155, -0.0023148171603679657, 0.01322653517127037, 0.022180629894137383, 0.010868369601666927, -0.011131929233670235, -0.0036482210271060467, 0.002925165928900242, 0.02720213495194912, -0.013635746203362942, -0.015577765181660652, 0.01849079318344593, 0.01546679250895977, 0.008198093622922897, -0.010029139928519726, 0.01543904934078455, 0.005579836200922728, -0.00016721735300961882, -0.013566388748586178, -0.05199061706662178, -0.007469836622476578, -0.01577196642756462, -0.0025194226764142513, 0.005337083712220192, 0.009051194414496422, -0.0308780986815691, -0.02444169484078884, -0.0003953395353164524, -0.02851993404328823, 0.0074004787020385265, 0.014565140940248966, -0.0039221844635903835, 0.0027517713606357574, -0.01797754503786564, 0.00414412934333086, 0.0036170100793242455, 0.0014357067411765456, -0.01793593168258667, 0.003669028403237462, 0.00037366521428339183, -0.01249134261161089, -0.025828849524259567, 0.008191158063709736, 0.003128037555143237, -0.019725361838936806, 0.031765878200531006, -0.005066588521003723, 0.0060202581807971, -0.008961029350757599, -0.0071715982630848885, -0.005111671052873135, -0.02297130785882473, 0.021653510630130768, -0.01697879284620285, 0.006946185138076544, -0.015286462381482124, 0.021681252866983414, 0.01055625919252634, 0.008336809463799, -0.017644628882408142, 0.0031367072369903326, 0.002736165886744857, -0.021320592612028122, -0.007920662872493267, -0.015106132254004478, -0.007643231190741062, 0.00034158723428845406, 0.004945212043821812, -0.022985178977251053, -0.016257472336292267, -0.0186849944293499, -0.007747267838567495, 0.005441120360046625, 0.003011863213032484, -0.0013516104081645608, 0.010479966178536415, 0.014773214235901833, 0.027521181851625443, 0.007449029479175806, -0.03259817138314247, -0.004837707616388798, -0.014017214067280293, 0.025856593623757362, 0.009883488528430462, -0.02553754672408104, -0.007560001686215401, 0.005146349780261517, -0.002113679423928261, -0.015827452763915062, -0.013843819499015808, -0.006207524333149195, -0.025731749832630157, 0.018920812755823135, 0.02427523583173752, -0.004917468875646591, 0.0012206975370645523, 0.0008071515476331115, 0.026328226551413536, -0.00015713879838585854, 0.011527269147336483, -0.0035181751009076834, -0.012969911098480225, -0.008787634782493114, 0.02412264794111252, -0.020127637311816216, -0.006491891574114561, -0.011596626602113247, 0.0034592209849506617, 0.004026221111416817, -0.014301581308245659, 0.0062491390854120255, 0.017311710864305496, -0.0030621474143117666, -0.014426425099372864, -0.017894316464662552, -0.001645514159463346, -0.02469138242304325, -0.014315453357994556, 0.016798462718725204, 0.0034574870951473713, -0.009335561655461788, 0.008967965841293335, -0.007372735533863306, -0.0018900004215538502, -0.041781146079301834, -0.020030537620186806, 0.04094885289669037, 0.0197531059384346, 0.019572775810956955, -0.010410607792437077, -0.002127551008015871, 0.012408113107085228, -0.011402424424886703, 0.011887929402291775, 0.016521031036973, -0.0006441607256419957, -0.0033135695848613977, 0.02358165755867958, 0.006616735365241766, 0.0023668354842811823, -0.01360106747597456, -0.0022333215456455946, -0.0020668627694249153, -0.0005175826954655349, 0.023997804149985313, 0.005420313216745853, -0.010889177210628986, 0.014454168267548084, -0.006113891489803791, 0.010972406715154648, 0.00207206467166543, 0.013469287194311619, -0.020696371793746948, -0.014856443740427494, 0.01125677302479744, 0.03398532792925835, 0.01717299409210682, -0.0011426700511947274, 0.009217653423547745, -0.003131505334749818, 0.012158424593508244, 0.015341948717832565, -4.925488610751927e-05, 0.016673618927598, -0.01163824088871479, -0.007747267838567495, -0.020474426448345184, -0.0003056078858207911, -0.004799560643732548, 0.007123047485947609, -0.0013134636683389544, -0.009106680750846863, 0.0016827939543873072, -0.0033690559212118387, -0.010334314778447151, 0.017103636637330055, 0.00535442354157567, 0.001365481992252171, -0.018352078273892403, 0.004005413968116045, 0.00680053373798728, 0.011090314947068691, -0.003887505503371358, -0.0066999648697674274, 0.013836883939802647, 0.0053856344893574715, -0.001707069226540625, -0.00907200202345848, 0.01481482945382595, 0.015577765181660652, -0.030240006744861603, 0.010091561824083328, -0.012428920716047287, -0.0066444785334169865, -0.008822314441204071, -0.004047028720378876, 0.008045506663620472, 0.007102240342646837, -0.009196845814585686, -0.0032996980007737875, 0.013621875084936619, 0.0174365546554327, 0.008829250000417233, 0.0019004041096195579, 0.026425328105688095, 0.017561398446559906, 0.0014053627382963896, 0.01360106747597456, 0.013490094803273678, 0.006367047317326069, 0.018726609647274017, -0.003065615426748991, -0.012630058452486992, -0.009862680919468403, 0.01166598405689001, -0.0011721471091732383, 0.018421435728669167, 0.015938425436615944, -0.0021310187876224518, 0.011915672570466995, 0.00646068062633276, 0.008281323127448559, 0.004258569795638323, 0.017616884782910347, -0.005902349948883057, 0.012574572116136551, -0.005735891405493021, -0.012241654098033905, -0.006339304149150848, -0.007053689565509558, 0.007483708206564188, -0.007123047485947609, 0.019184371456503868, 0.01025108527392149, 0.00937024038285017, -0.006994735449552536, 0.0011313993018120527, -0.005538221448659897, 0.007091836538165808, 0.01828272081911564, 0.0013446746161207557, -0.00020493066404014826, -0.011548075824975967, -0.008184222504496574, 0.016937177628278732, 0.0019246793817728758, -0.02494107000529766, -0.01360106747597456, 0.02186158299446106, -0.025704005733132362, -0.022333215922117233, 0.0020495234057307243, -0.00941879115998745, 0.007136919070035219, -0.006495359353721142, -0.00414412934333086, 0.0035493862815201283, -0.014981288462877274, 0.0011157938279211521, -0.019711490720510483, 0.006856020074337721, -0.006831744685769081, -0.015022902749478817, 0.0008856126223690808, -0.003327441168949008, 0.024067161604762077, -0.002850606106221676, -0.005957836285233498, 0.01607714220881462, -0.005285065621137619, -0.02287420816719532, -0.006686093285679817, -0.013191856443881989, -0.004015817306935787, 0.019004041329026222, 0.0040504964999854565, 0.00611042371019721, 0.00798308476805687, -0.007726460695266724, -0.015050645917654037, 0.0082605155184865, 0.0016108351992443204, 0.01772785745561123, 0.015799710527062416, 0.006821340881288052, -0.0005206171190366149, 0.0020061747636646032, -0.012123745866119862, -0.004296716768294573, 0.009058130905032158, 0.01352477353066206, 0.022888079285621643, -0.002224651863798499, 0.003644753247499466, -0.002932101720944047, -0.0035077715292572975, -0.026106281206011772, 0.011860186234116554, -0.0037279825191944838, 0.011887929402291775, -0.00643640523776412, -0.009737837128341198, 0.00600638659670949, -0.003589266911149025, -0.00019019213505089283, -0.004220422822982073, 0.011187415570020676, 0.00904425885528326, 0.026924703270196915, -0.013517837971448898, 0.025454318150877953, -0.006533506326377392, -0.021278977394104004, 0.021792225539684296, 0.03318077698349953, -0.0032095329370349646, -0.0015215370804071426, -0.03429050371050835, 0.007324185222387314, -0.007483708206564188, 0.006294221617281437, 0.00803857110440731, 0.020682500675320625, 0.0035545879509299994, 0.029130281880497932, 0.01908726990222931, 0.004809964448213577, -0.004588019568473101, -0.00906506646424532, -0.026633400470018387], 'id': '79649dae-566c-434e-82f9-9ff959e44833', '_distance': 1.0419756174087524}), Document(page_content='31 \\nIndustry Trends \\nOur industry is dynamic and highly competitive, with frequent changes in both technologies and business models. Each \\nindustry shift is an opportunity to conceive new products, new technologies, or new ideas that can further transform the \\nindustry and our business. At Microsoft, we push the boundaries of what is possible through a broad range of research \\nand development activities that seek to identify and address the changing demands of customers and users, industry \\ntrends, and competitive forces. \\nEconomic Conditions, Challenges, and Risks \\nThe markets for software, devices, and cloud -based services are dynamic and highly competitive. Our competitors are \\ndeveloping new software and devices, while also deploying competing cloud -based services for consumers and \\nbusinesses. The devices and form factors customers prefer evolve rapidly, and influence how users access services in \\nthe cloud, and in some cases, the user’s choice of which suite of cloud -based services to use. We must continue to evolve \\nand adapt over an extended time in pace with this changing environment. The investments we are making in infrastructure \\nand devices will continue to increase our operating costs and may decrease our operating margins. \\nOur success is highly dependent on our ability to attract and retain qualified employees. We hire a mix of university and \\nindustry talent worldwide. We compete for talented individuals globally by offering an exceptional working environment, \\nbroad customer reach, scale in resources, the ability to grow one’s career across many different products and businesses, \\nand competitive compensation and benefits. Aggregate demand for our software, services, and devices is correlated to \\nglobal macroeconomic and geopolitical factors, which remain dynamic. \\nOur devices are primarily manufactured by third -party contract manufacturers, some of which contain certain components \\nfor which there are very few qualified suppliers. For these components, we have limited near -term flexibility to use other \\nmanufacturers if a current vendor becomes unavailable or is unable to meet our requirements. Extended disruptions at \\nthese suppliers and/or manufacturers could lead to a similar disruption in our ability to manufacture devices on time to \\nmeet consumer demand. \\nOur international operations provide a significant portion of our total revenue and expenses. Many of these revenue and \\nexpenses are denominated in currencies other than the U.S. dollar. As a result, changes in foreign exchange rates may \\nsignificantly affect revenue and expenses. Fluctuations in the U.S. dollar relative to certain foreign currencies did not hav e \\na material impact on reported revenue or expenses from our international operations in fiscal year 2022. \\nRefer to Risk Factors in our fiscal year 2022 Form 10 -K for a discussion of these factors and other risks. \\nSeasonality \\nOur revenue fluctuates quarterly and is generally higher in the second and fourth quarters of our fiscal year. Second \\nquarter revenue is driven by corporate year -end spending trends in our major markets and holiday season spending by \\nconsumers, and fourth quarter revenue is driven by the volume of multi -year on -premises contracts executed during the \\nperiod. \\nReportable Segments \\nWe report our financial performance based on the following segments: Productivity and Business Processes, Intelligent \\nCloud, and More Personal Computing. The segment amounts included in MD&A are presented on a basis consistent with \\nour internal management reporting. Additional information on our reportable segments is contained in Note 19 – Segment \\nInformation and Geographic Data of the Notes to Financial Statements in our fiscal year 2022 Form 10 -K. \\nMetrics \\nWe use metrics in assessing the performance of our business and to make informed decisions regarding the allocation of', metadata={'vector': [0.015208840370178223, -0.03496319428086281, -4.293437450542115e-05, 0.023085245862603188, 0.012839212082326412, -0.040924523025751114, -0.04849541187286377, 0.029419157654047012, -0.026960110291838646, 0.009553029201924801, 0.06366699188947678, -0.019195478409528732, 0.017287854105234146, -0.03162484988570213, -0.07803379744291306, 0.036542944610118866, -0.023651571944355965, -0.02155020460486412, 0.02842063643038273, 0.017466694116592407, -0.0331449881196022, 0.011527719907462597, -0.025961587205529213, 0.0442032553255558, -0.0012230038410052657, -0.0024534594267606735, 0.011758721433579922, 0.005100661888718605, 0.019463738426566124, 0.015454744920134544, 0.010708036832511425, 0.008159568533301353, -0.017198434099555016, -0.03412860631942749, 0.0313267819583416, 0.01286901906132698, 0.019329609349370003, -0.038152504712343216, 0.05240008234977722, 0.013360828161239624, -0.001935568987391889, 0.020968973636627197, -0.01703449711203575, 0.05362215265631676, 0.007034367881715298, -0.001565780257806182, -0.01621481403708458, -0.02615533024072647, 0.001512687187641859, -0.014620158821344376, -0.03029845468699932, -0.04351770132780075, 0.017794566228985786, 0.013085116632282734, 0.0008415720076300204, -0.01901663839817047, 0.06420351564884186, 0.01448602881282568, -0.006304105278104544, 0.0012956575956195593, -0.009895806200802326, 0.0011997174005955458, -0.008412925526499748, -0.004873386584222317, -0.013725959695875645, -0.0045827715657651424, -0.027526436373591423, 0.008427828550338745, -0.013040406629443169, -0.022727565839886665, -0.033770930022001266, -0.04020916298031807, 0.020059872418642044, 0.028301408514380455, 0.0011717737652361393, -0.03871883079409599, 0.026140427216887474, -0.0032135287765413523, 0.011743818409740925, 0.005562664940953255, -0.01722824014723301, 0.040179356932640076, 0.012034432962536812, 0.0105888107791543, 0.000917020021006465, -0.023517442867159843, -0.008688637055456638, -0.0916256234049797, -0.006032119505107403, 0.015633584931492805, 0.020343035459518433, 0.005164001137018204, 0.02168433368206024, -0.007380870170891285, 0.008979251608252525, -0.017854180186986923, -0.015380228869616985, 0.018405603244900703, 0.03624488040804863, -0.04509745165705681, 0.029821548610925674, 0.023010728880763054, 0.02500777505338192, -0.05147607624530792, 0.004139397758990526, 0.01066332682967186, -0.01985122449696064, 0.032578662037849426, -0.03794385865330696, 0.05523171275854111, -0.016006167978048325, 0.01727295108139515, -0.017436886206269264, 0.02114781364798546, -0.024858741089701653, 0.023785702884197235, 0.008755701594054699, -0.03842076659202576, -0.0036811206955462694, 0.024098671972751617, 0.012891373597085476, -0.03579777851700783, 0.0078316954895854, -0.046259913593530655, 0.0036643543280661106, 0.07517235726118088, 0.012153659015893936, -0.048286765813827515, 0.004795143846422434, -0.02546977810561657, -0.04011974483728409, 0.05868928134441376, -0.05484422668814659, -0.028331216424703598, 0.008070149458944798, 0.008994154632091522, 0.018644055351614952, 0.015044903382658958, 0.014359351247549057, 0.03159504383802414, 0.01989593543112278, -0.027422113344073296, -0.03338344022631645, -0.03469493240118027, -0.009709514677524567, -0.002995567861944437, -0.03555932641029358, 0.04181872308254242, 0.02703462727367878, -0.00829369854182005, -0.01663210801780224, 0.005067129619419575, -0.0018834073562175035, -0.015439841896295547, 0.02366647496819496, -0.030820069834589958, 0.018405603244900703, 0.0039232997223734856, -0.00957538466900587, -0.023890025913715363, 0.015439841896295547, 0.012012077495455742, -0.012280337512493134, -0.0030626326333731413, 0.031207555904984474, -0.0027477999683469534, 0.043130215257406235, -0.021252136677503586, -0.05290679261088371, 0.020343035459518433, 0.003720241831615567, -0.017466694116592407, -0.015119420364499092, -0.012615662068128586, 0.023100148886442184, 0.00474298233166337, 0.011348879896104336, -0.005439712665975094, -0.05722875893115997, -0.00893454160541296, 0.004061155486851931, -0.0037053385749459267, -0.02196749672293663, 0.003975461237132549, -0.009366737678647041, -0.008815315552055836, 0.028524959459900856, -0.009105930104851723, -0.006352541036903858, 0.034009382128715515, 0.04229562729597092, 0.005156549625098705, 0.04310040920972824, 0.007086529862135649, 0.023934734985232353, 0.004176656249910593, 0.011453202925622463, 0.01123710535466671, -0.00830860249698162, -0.023383311927318573, -0.0015536713181063533, 0.021490590646862984, 0.024307318031787872, 0.04965787008404732, 0.05517210066318512, 0.007440483663231134, 0.005320486146956682, -0.00017907272558659315, 0.0029769386164844036, -0.020805038511753082, -0.0029657611157745123, -0.0009240059880539775, 0.005931522231549025, 0.02035793848335743, -0.01777966320514679, 0.012518790550529957, 0.02339821681380272, 0.02983645163476467, -0.008606668561697006, -0.026214944198727608, 0.00983619224280119, -0.03988128900527954, 0.0478992760181427, 0.012347402051091194, -0.019240189343690872, -0.03997071087360382, -0.016334041953086853, 0.011743818409740925, -0.014605255797505379, -0.017123917117714882, -0.03403918817639351, -0.017749857157468796, -0.024143382906913757, -0.00434059277176857, 0.0368410125374794, -0.02514190413057804, 0.021863173693418503, -0.002606218447908759, -0.033741120249032974, -0.001264919526875019, 0.02588707022368908, -0.025782747194170952, 0.0013412990374490619, -0.010454680770635605, 0.0015182759379968047, -0.01603597402572632, 0.016468171030282974, 0.12864547967910767, 0.011333976872265339, 0.041937947273254395, 0.009530674666166306, -0.04077548906207085, -0.007995632477104664, 0.008181924000382423, 0.03830153867602348, 0.024933258071541786, 0.06071613356471062, 0.024739515036344528, -0.005834650713950396, -0.01020132377743721, 0.052668340504169464, -0.001753934775479138, -0.026319267228245735, 0.011892851442098618, 0.00992561224848032, 0.04780985787510872, 0.014836257323622704, 0.005234791897237301, 0.007637952454388142, 0.0011289266403764486, 0.0391361229121685, -0.028405731543898582, 0.020343035459518433, -0.015767715871334076, -0.013077665120363235, 0.027064433321356773, 0.040596649050712585, -0.021162718534469604, -0.02882302552461624, 0.024009251967072487, 0.026721656322479248, 0.0009533468983136117, 0.027481725439429283, 0.004530610051006079, -0.03035806678235531, -0.009284770116209984, -0.007630500942468643, -0.01740708015859127, -0.03994090482592583, -0.003753774333745241, -0.008576861582696438, -0.015179033391177654, 0.01457544881850481, 0.015648487955331802, 0.02192278765141964, 0.009620094671845436, 0.02782450243830681, 0.045484937727451324, 0.0007363172480836511, -0.0016067643882706761, -0.03090948984026909, -0.00958283618092537, -0.04077548906207085, -0.017526306211948395, 0.013711056672036648, 0.03508242219686508, 0.025484681129455566, 0.013621636666357517, -0.001143830013461411, 0.008643927052617073, 0.019463738426566124, -0.017332563176751137, 0.011453202925622463, 0.01342789363116026, -0.008323505520820618, 0.03997071087360382, 0.02538035809993744, -0.01248153205960989, 0.017347466200590134, -0.00801053550094366, 0.025663521140813828, 0.020477164536714554, -0.03833134472370148, 0.02620004117488861, -0.017302757129073143, -0.03329402208328247, -0.010439776815474033, 0.05836141109466553, 0.0006063789478503168, 0.023964542895555496, -0.0056967949494719505, 0.04175910726189613, -0.01956806145608425, -0.0008625297923572361, 0.03851018473505974, -0.0024664998054504395, -0.0050522261299192905, 0.009724417701363564, 0.012801953591406345, -0.0009025824256241322, 0.014277382753789425, 0.006553736049681902, -0.07833186537027359, -0.009135736152529716, 0.0021125460043549538, -0.028286505490541458, -0.049479030072689056, -0.01142339687794447, -0.010231130756437778, 0.03067103773355484, 0.001100051449611783, -0.017109014093875885, 0.04763101786375046, 0.0007167566800490022, 0.03630449250340462, 0.02514190413057804, 0.00400526775047183, -0.027019722387194633, 0.01916567236185074, -0.01112532988190651, 0.010059742256999016, -0.03049219772219658, -0.005871909204870462, 0.037794824689626694, -0.007190852891653776, -0.003504143562167883, 0.004880838096141815, -0.015544164925813675, 0.05499326065182686, -0.025946684181690216, -0.0006566776428371668, 0.06348815560340881, 0.015015097334980965, -0.01989593543112278, -0.01031309925019741, -0.014307189732789993, -0.01315218210220337, 0.0271687563508749, -0.05770566314458847, 0.04065626487135887, -0.028495151549577713, 0.04542532563209534, 0.05576823279261589, 0.00018058634304907173, -0.011661849915981293, -0.02628946118056774, -0.005178904626518488, -0.01597636193037033, -0.007287724409252405, 0.04721372574567795, -0.030820069834589958, 0.038480378687381744, -0.02822689153254032, 0.001965375617146492, 0.008323505520820618, 0.001827519852668047, -0.004232543520629406, 0.024188091978430748, -0.019106058403849602, -0.020924264565110207, 0.01815224625170231, -0.0033085376489907503, -0.00976167619228363, 0.018778186291456223, -0.03669197857379913, -0.00419155927374959, -0.025127001106739044, -0.040596649050712585, 0.02044735848903656, 0.01314473059028387, -0.026170233264565468, -0.03237001597881317, -0.018867606297135353, -0.008897283114492893, 0.029970580711960793, -0.008174472488462925, -0.0019113511079922318, 0.04339847341179848, -0.011274362914264202, -0.012362306006252766, -0.01467232033610344, 0.002423652680590749, 0.011430848389863968, 0.03478435426950455, -0.011937561444938183, 0.03472474217414856, 0.010238582268357277, 0.0058905379846692085, 0.0027608403470367193, -0.005033596884459257, -0.008181924000382423, -0.032995954155921936, 0.01114768534898758, -0.003941928967833519, 0.02362176589667797, 0.030790263786911964, 0.01102845836430788, 0.004333140794187784, 0.022951116785407066, 0.01634894497692585, -0.008323505520820618, 0.015134323388338089, -0.007630500942468643, -0.0023994348011910915, -0.05472499877214432, 0.008055245503783226, -0.061461299657821655, -0.017421983182430267, -0.031475815922021866, -0.01602107100188732, -0.006881609093397856, 0.03207194805145264, -0.03490358218550682, 0.01916567236185074, -0.01503745187073946, 0.017347466200590134, 0.014210318215191364, -0.03833134472370148, 0.025752941146492958, -0.01800321415066719, 0.017854180186986923, 0.03347286209464073, 0.028659088537096977, 0.01368124969303608, -0.0013273271033540368, 0.00671394681558013, -0.030611423775553703, 0.0013291900977492332, 0.01195246446877718, 0.029091285541653633, -0.006758656818419695, -0.011572429910302162, 0.0230256337672472, 0.03508242219686508, 0.01305531058460474, -0.029180705547332764, 0.04822714999318123, -0.030551809817552567, -0.015208840370178223, 0.011453202925622463, 0.03323440998792648, 0.04822714999318123, 0.03555932641029358, -0.020506970584392548, 0.016825851052999496, -0.03979187086224556, 0.015350421890616417, -0.023979445919394493, -0.02022380754351616, 0.001110297511331737, -0.021073298528790474, 0.0037612258456647396, 0.0686148926615715, -0.023890025913715363, 0.01386008970439434, -0.034009382128715515, -0.016781140118837357, -0.00014228015788830817, 0.0037239675875753164, -0.01929980143904686, -0.005968780722469091, 0.03219117596745491, -0.036036234349012375, -0.018137343227863312, -0.03347286209464073, -0.03007490374147892, -0.0028931074775755405, -0.015380228869616985, -0.046677205711603165, 0.015439841896295547, 0.0036177814472466707, -0.00046316732186824083, 0.023979445919394493, -0.0015015096869319677, -0.027138950303196907, -0.014120898209512234, -0.011192395351827145, -0.017466694116592407, 0.0013403675984591246, -0.011945012956857681, 0.0024162011686712503, -0.005871909204870462, 0.014150704257190228, 0.02579765021800995, -0.006665511056780815, -0.01815224625170231, 0.013271408155560493, -0.005316760390996933, 0.03356228023767471, 0.0056967949494719505, -0.016423461958765984, 0.016334041953086853, 0.01943393237888813, -0.009940516203641891, -0.03108832985162735, -0.008703540079295635, -0.0008415720076300204, -0.014776644296944141, -0.0009421693976037204, 0.012638017535209656, -0.014627611264586449, 0.02873360551893711, 0.004381576552987099, -0.0067400275729596615, 0.009083574637770653, 0.037377532571554184, 0.04056684300303459, -0.0018237940967082977, 0.00921025313436985, -0.0007069763378240168, 0.0007791643147356808, -0.019866129383444786, 0.019284898415207863, -0.029225414618849754, 0.024158285930752754, -0.012548597529530525, 0.043130215257406235, 0.027317790314555168, 0.005879360716789961, 0.00264906557276845, -0.00016498443437740207, 0.006732576061040163, -0.0038823154754936695, 0.005931522231549025, -0.021118007600307465, -0.00511183962225914, -0.01512687187641859, 0.021296847611665726, 0.0021181346382945776, -0.012496436014771461, -0.003701612586155534, -0.019791612401604652, 0.002639750950038433, -0.04581281170248985, -0.012272886000573635, 0.011110426858067513, -0.008099955506622791, -0.02542506717145443, 0.019135866314172745, 0.011781075969338417, -0.03952360898256302, 0.0006217479822225869, 0.006684139836579561, 0.009403996169567108, 0.010059742256999016, 0.02527603507041931, 0.011155136860907078, -0.009493416175246239, -0.03979187086224556, -0.01593165099620819, -0.01077510230243206, 0.04208698123693466, 0.0053540184162557125, 0.006240766029804945, -0.0359170064330101, 0.0040201712399721146, 0.018450312316417694, 0.024709708988666534, 0.022876599803566933, -0.03144600987434387, -0.005681891459971666, 0.029687417671084404, 0.010067193768918514, 0.003934476990252733, -0.011356331408023834, 0.020551681518554688, -0.01093903835862875, -0.014590352773666382, -0.011140233837068081, 0.03058161772787571, 0.011654398404061794, 0.007936019450426102, -0.004411383531987667, -0.009530674666166306, 0.015380228869616985, 0.0042921570129692554, -0.004459819290786982, 0.015812424942851067, -0.03293634206056595, -0.013472603633999825, 0.019284898415207863, 0.019657481461763382, 0.019702192395925522, 0.014158155769109726, -0.031147943809628487, 0.006900238338857889, -0.013286312110722065, 0.0010609301971271634, -0.017466694116592407, 0.0018936534179374576, -0.00446727080270648, -0.037884246557950974, -0.013047859072685242, -0.0026714205741882324, -0.0006999904289841652, 0.013636539690196514, 0.034188222140073776, 0.015201388858258724, -0.01676623709499836, 0.005406179931014776, -0.0001485674874857068, 0.003075673244893551, 0.00022774138778913766, 0.14211808145046234, -0.008710991591215134, -0.024441448971629143, -0.004403931554406881, 0.04688585177063942, -0.002250401768833399, -0.010059742256999016, 0.025305841118097305, 0.011281815357506275, -0.007246740628033876, 0.001854532165452838, -0.017854180186986923, -0.014247575774788857, -0.012660372070968151, -0.007310079410672188, 0.014493481256067753, 0.03934476897120476, -0.02827160246670246, -0.000357912591425702, 0.006248218007385731, -0.011497912928462029, -0.012541146017611027, 0.0004398808814585209, -0.004049977753311396, 0.006538832560181618, -0.015290808863937855, 0.022027110680937767, -0.007172223646193743, -0.01469467580318451, 0.020462261512875557, 0.007749727461487055, -0.008696088567376137, -0.013114923611283302, -0.024843838065862656, 0.023606862872838974, -0.0035264985635876656, 0.020521875470876694, 0.021341556683182716, -0.024217898026108742, 0.00893454160541296, 0.004489625804126263, -0.009985226206481457, 0.015961458906531334, -0.047601211816072464, 0.009471061639487743, -0.014590352773666382, -0.01368124969303608, 0.0011810882715508342, 0.0012705082772299647, -0.017243143171072006, -0.02251891978085041, 0.002028714632615447, -0.011818334460258484, -0.015208840370178223, -0.027705276384949684, -0.016736431047320366, 0.022354982793331146, 0.03207194805145264, -0.008487441577017307, -0.0038115247152745724, 0.006907689850777388, -0.024486158043146133, -0.002423652680590749, 0.013502409681677818, -0.017481597140431404, 0.00985854770988226, 0.004459819290786982, 0.006538832560181618, 0.006270573008805513, -0.018644055351614952, -0.03067103773355484, -0.02745191939175129, 0.023591959848999977, 0.006076829507946968, 0.0017548662144690752, -0.05991135537624359, 0.012347402051091194, 0.040686070919036865, 0.008606668561697006, -0.014739385806024075, -0.03991109877824783, -0.005443438421934843, -0.0018945848569273949, 0.025752941146492958, 0.011035909876227379, -0.04232543706893921, -0.0005709835095331073, -9.297111682826653e-05, -0.011542622931301594, -0.010514293797314167, 0.010708036832511425, -0.019910838454961777, 0.014173059724271297, -0.0016272565117105842, 0.012369757518172264, 0.0017250595847144723, 0.013114923611283302, -0.013211795128881931, -0.0168109480291605, 0.023770799860358238, -0.004202737007290125, 0.012891373597085476, 0.0067810118198394775, 0.027153853327035904, 0.011810882948338985, 0.029180705547332764, -0.0003604741068556905, 0.01087197382003069, -0.017943600192666054, -0.008874928578734398, -0.019657481461763382, -0.0078316954895854, -0.007559710182249546, 0.013062762096524239, -0.0005779694765806198, -0.012831760570406914, 0.023293891921639442, -0.02721346728503704, 0.024650095030665398, -0.02219104766845703, 0.029881160706281662, 0.01786908321082592, -0.02086465060710907, -0.028211988508701324, -0.015767715871334076, 0.005845827981829643, 0.020894458517432213, -0.0027589774690568447, 0.011371234431862831, -0.008994154632091522, 0.025484681129455566, -0.02159491367638111, -0.0024124751798808575, -0.01676623709499836, -0.012705082073807716, 0.0008979251724667847, -0.013711056672036648, -0.012056787498295307, 0.0058607314713299274, -0.0168109480291605, 0.015633584931492805, -0.014426415786147118, -0.006419606041163206, 0.030641229823231697, -0.008986703120172024, 0.02417318895459175, 0.012183465994894505, 0.00012819185212720186, -0.01183323748409748, 0.03633429855108261, 0.008710991591215134, -0.005521680694073439, -0.021892979741096497, -0.03722849860787392, 0.015104517340660095, -0.02685578726232052, 0.01040997076779604, 0.053771186619997025, -0.015469648875296116, 0.012026981450617313, 0.006035845726728439, -0.007973277010023594, -0.02882302552461624, -0.0033905059099197388, -0.03618526831269264, -0.023323699831962585, 0.031982529908418655, -0.027526436373591423, -0.01029074378311634, 0.013018052093684673, 0.027779793366789818, 0.016870560124516487, 0.006594720296561718, -0.02099878154695034, 0.013986768200993538, -0.02776488848030567, 0.023219376802444458, -0.014255027286708355, -0.025067387148737907, 0.024620288982987404, -0.03159504383802414, -0.020462261512875557, 0.010178969241678715, 0.025901973247528076, -0.005864457227289677, 0.016050878912210464, 0.014918225817382336, -0.0005709835095331073, -0.015305711887776852, -0.023129956796765327, -0.006624526809900999, -0.020670907571911812, -0.019687289372086525, 0.009620094671845436, 0.011624591425061226, -0.0011885398998856544, 0.01201952900737524, -0.007637952454388142, -0.007000835612416267, 0.015529261901974678, -0.0018526692874729633, 0.04569358751177788, -0.03415841609239578, 0.0021982400212436914, -0.02496306411921978, -0.011132781393826008, 0.014679772779345512, 0.022578533738851547, 0.0007847530650906265, 0.03254885599017143, -0.0006813612417317927, -0.01448602881282568, -0.02311505191028118, -0.010328002274036407, -0.025708230212330818, -0.006490396801382303, -0.002798098837956786, -0.015529261901974678, 0.01259330753237009, 0.008629024028778076, -0.006140168756246567, 0.01740708015859127, 0.02551448717713356, -0.01736237108707428, 0.014664868824183941, -0.03397957608103752, -0.035529520362615585, -0.008368215523660183, -0.015693198889493942, 0.026870690286159515, 0.010149162262678146, -0.005722875706851482, 0.0028279053512960672, -0.015052355825901031, 0.019925741478800774, 0.02736249938607216, -0.005871909204870462, 0.02454577200114727, -0.0039009444881230593, 0.02450106106698513, 0.0040760585106909275, 0.037556372582912445, 0.00501869386062026, -0.013338473625481129, -0.01621481403708458, -0.03800347074866295, -0.0038823154754936695, 0.0025596455670893192, 0.0131298266351223, 0.019344512373209, -0.02053677849471569, 0.01239211205393076, 0.001458662678487599, -0.003025374375283718, 0.0002491649065632373, 0.0015201388159766793, -0.018524829298257828, -0.00868118554353714, -0.018569540232419968, -0.029538385570049286, -0.033830542117357254, 0.01478409580886364, -0.014933128841221333, 0.021490590646862984, -0.01031309925019741, -0.01630423404276371, 0.0003711858589667827, 0.010216227732598782, -0.004593949299305677, -0.009284770116209984, -0.023249182850122452, 0.009128284640610218, 0.04357731342315674, 0.006956125609576702, 0.02998548373579979, -0.008643927052617073, 0.006613349076360464, 0.020253615453839302, 0.01837579719722271, -0.00983619224280119, -0.007406951393932104, 0.001103777321986854, 0.027556242421269417, -0.019881032407283783, -0.008860024623572826, -0.0060954587534070015, 0.014463674277067184, -0.017556114122271538, 0.008740798570215702, 0.0228020828217268, 0.019836321473121643, 0.005812295712530613, -0.0131223751232028, 0.008517248556017876, 0.06006038933992386, -0.017019594088196754, -0.017392177134752274, -0.020849747583270073, 0.02983645163476467, -0.013502409681677818, -0.001250947592779994, 0.04250427335500717, -0.008144665509462357, 0.02073052152991295, 0.018688766285777092, 0.010171517729759216, 0.015179033391177654, -0.024664998054504395, 0.024411641061306, 0.030060000717639923, -0.004187833517789841, -0.005562664940953255, -0.012347402051091194, -0.046438753604888916, -0.008912187069654465, 0.02394963800907135, 0.01782437413930893, -0.010916683822870255, -0.0105962622910738, 0.008122310973703861, -0.014068735763430595, -0.00939654465764761, -0.0008802274824120104, -0.02335350587964058, 0.0039717354811728, -0.001428856048732996, -0.007269095629453659, -0.010320550762116909, -0.002384531544521451, 0.024858741089701653, 0.007202030625194311, -0.013442796654999256, -0.0039791869930922985, 0.01731766015291214, -0.01707920804619789, 0.01967238448560238, -0.004757885821163654, -0.003919573966413736, -0.010000129230320454, 0.00019397605501580983, -0.001854532165452838, -0.005547761917114258, -0.036036234349012375, 0.013509861193597317, 0.025708230212330818, -0.05403944477438927, 0.02472461201250553, -0.028614379465579987, 0.009746773168444633, -0.020432455465197563, -0.025410164147615433, 0.0030309632420539856, 0.02588707022368908, 0.01758592016994953, -0.0409841351211071, -0.02201220765709877, -0.026036104187369347, -0.015171581879258156, -0.01579752191901207, 0.007112610619515181, -0.02275737375020981, -0.0006115019205026329, -0.005961328744888306, 0.0008378461352549493, 0.040924523025751114, -0.027779793366789818, -0.0015238646883517504, -0.02679617330431938, 0.01057390682399273, -0.003945654723793268, 0.0012090320233255625, 0.0029992936179041862, 0.023770799860358238, 0.010857069864869118, -0.011356331408023834, 0.0004866866220254451, -0.03368150815367699, 0.013375732116401196, 0.007496370933949947, 0.0069635771214962006, -0.023755894973874092, 0.02219104766845703, 0.026736559346318245, -0.003537676064297557, -0.022027110680937767, 0.008025439456105232, 0.0007605351856909692, 0.007045545615255833, -0.0036513139493763447, 0.010976296849548817, -0.028629282489418983, -0.0006026530754752457, -0.02652791328728199, 0.02265305072069168, -0.050045356154441833, 0.015000194311141968, 0.003340207040309906, 0.005734053440392017, 0.009828740730881691, 0.010998651385307312, 0.0010804908815771341, -0.00714986864477396, 0.016959980130195618, 0.010790005326271057, 0.005413631908595562, 0.007339886389672756, 0.005283227656036615, 0.0014232672983780503, -0.021565107628703117, -0.011922657489776611, -0.01621481403708458, 0.003716516075655818, 0.012660372070968151, -0.0041729300282895565, -0.000720948213711381, 0.019120963290333748, 0.006855528336018324, -0.00292477710172534, 0.006367444526404142, -0.023890025913715363, 0.011602235957980156, -0.016512881964445114, 0.007936019450426102, -0.009165543131530285, -0.0018955162959173322, -0.021073298528790474, -0.037317920476198196, -0.00739204790443182, -0.015469648875296116, -0.01029074378311634, -0.00443373853340745, -0.0078018889762461185, 0.005324211902916431, -0.020432455465197563, -0.014828805811703205, -0.0313267819583416, -0.00840547401458025, -0.019419029355049133, -0.003414723789319396, 0.02703462727367878, 0.030790263786911964, -0.015052355825901031, -0.01736237108707428, -0.01441896427422762, 0.026587527245283127, 0.024143382906913757, -0.01727295108139515, -0.021118007600307465, 0.010395067743957043, 0.005931522231549025, -0.028152376413345337, -0.0010078371269628406, 0.011825785972177982, -0.020328132435679436, 0.07099942862987518, 0.0255591981112957, -0.02174394764006138, -0.009784030728042126, -0.014545642770826817, -0.015044903382658958, 0.006531381048262119, -0.0011009828886017203, 0.027064433321356773, 0.013725959695875645, 0.03564874827861786, 0.008815315552055836, -0.017675340175628662, 0.013353376649320126, 0.006151346489787102, -0.024471255019307137, -0.02062619850039482, 0.01925509236752987, 0.004437464289367199, 0.012958439067006111, 0.007161046378314495, 0.013092568144202232, -0.008248988538980484, 0.022086722776293755, 0.01606578193604946, -0.011468106880784035, -0.015395131893455982, -0.008852573111653328, -0.023681379854679108, -0.02339821681380272, -0.0030030193738639355, 0.026006298139691353, -0.01570810191333294, 0.007108884863555431, -0.004452367313206196, 0.016095587983727455, -0.012421919032931328, 0.0313267819583416, -0.021296847611665726, -0.012384660542011261, -0.018569540232419968, 0.02961290068924427, 0.0009817563695833087, -0.014813902787864208, 0.00849489402025938, -8.703307685209438e-05, 0.00024753485922701657, -0.029925871640443802, -0.00662080105394125, 0.006304105278104544, 0.007846599444746971, -0.01241446752101183, -0.004538061562925577, 0.013837735168635845, 0.012354854494333267, 0.006922593340277672, 0.006013490725308657, 0.04310040920972824, -0.004806321579962969, -0.005078306887298822, 0.005089484620839357, 0.014329544268548489, -0.011773624457418919, -0.016796045005321503, 0.023740991950035095, 0.03150562196969986, 0.03029845468699932, -0.034665126353502274, 0.007637952454388142, 0.013904799707233906, 0.010812359862029552, 0.00801798701286316, 0.01031309925019741, 0.0026751463301479816, 0.0008457635412923992, -0.012630566023290157, 0.01883780024945736, -0.009642449207603931, 0.026006298139691353, -0.016244621947407722, -0.013345925137400627, -0.0041170427575707436, 0.02427751198410988, 0.03600642830133438, -0.011825785972177982, -0.0003893492976203561, -0.012682727538049221, -0.006833173334598541, 0.0028986961115151644, -0.00019362675084266812, -0.018122440204024315, 0.009128284640610218, 0.012079142965376377, -0.0056669884361326694, -0.021252136677503586, 0.006985932122915983, 0.013733411207795143, -0.0022634421475231647, 0.006423331797122955, -0.012533693574368954, -0.004959080368280411, 0.006550010293722153, 0.007272821385413408, 0.00819682702422142, 0.0069747548550367355, -0.033741120249032974, 0.012474080547690392, -0.003159504383802414, -0.01351731363683939, -0.0016151475720107555, -0.013435345143079758, -0.012742340564727783, 0.02965761162340641, -0.011594784446060658, 0.007347337901592255, -0.004932999610900879, -0.0068667056038975716, -0.0184205062687397, 0.0016477485187351704, 0.006531381048262119, -0.0061587980017066, 0.02818218246102333, 0.016185007989406586, 0.02035793848335743, 0.012429370544850826, 0.03558913245797157, -0.0020100856199860573, -0.010454680770635605, 0.02846534550189972, -0.007354789413511753, -0.0024031607899814844, 0.023040536791086197, -0.011274362914264202, -0.003729556454345584, 0.0005360538489185274, -0.014314641244709492, 0.0015005782479420304, 0.0026844609528779984, 0.01441151276230812, -0.006475493311882019, -0.008047793991863728, 0.021773753687739372, 0.001264919526875019, -0.025782747194170952, 0.007105159107595682, 0.010447229258716106, -0.028197085484862328, -0.0027049530763179064, -0.008651378564536572, -0.003753774333745241, -0.004049977753311396, 0.00028083447250537574, 0.011170039884746075, -0.0025372905656695366, -0.003774266457185149, -0.020194001495838165, 0.01084961835294962, -0.003368150908499956, 0.010149162262678146, -0.001418609987013042, 0.014351899735629559, 0.0025372905656695366, -0.0028819299768656492, -0.02864418551325798, 0.009187898598611355, -0.006617075297981501, -0.01901663839817047, 0.0006291996105574071, -0.0246351920068264, -0.010886876843869686, 0.0034259012900292873, 0.030641229823231697, -0.01570810191333294, -0.011743818409740925, 0.013733411207795143, 0.0096722561866045, -0.005130468867719173, -0.00285026035271585, 0.003867412218824029, 0.017928697168827057, -0.04026877507567406, 0.006609623320400715, 0.00303282612003386, 0.007283998653292656, 0.013912251219153404, -0.003953106235712767, 0.013927154242992401, 0.014001671224832535, -0.013480055145919323, 0.018867606297135353, -0.01837579719722271, 0.01514922734349966, -0.013524765148758888, -0.024709708988666534, 0.0230256337672472, -0.01740708015859127, -0.03615545853972435, -0.02174394764006138, 0.022638145834207535, -0.006829447578638792, 0.019180575385689735, -0.008725895546376705, 0.012034432962536812, -0.01549945492297411, -0.029165802523493767, -0.00856941007077694, 0.004228817764669657, 0.0409841351211071, 0.01549945492297411, -0.013375732116401196, 0.020745424553751945, 0.01643836498260498, 0.02551448717713356, -0.0026304363273084164, 0.017153723165392876, -0.010678230784833431, 0.0028931074775755405, -0.012205820530653, 0.018316183239221573, 0.007324982900172472, -0.00016475157462991774, -0.020879553630948067, 0.004102139268070459, -0.01672152802348137, -0.03853999078273773, 0.00048575515393167734, 0.007019464857876301, -0.013375732116401196, 0.022638145834207535, 0.028152376413345337, 0.032995954155921936, -0.007555984426289797, -0.004046251997351646, -0.012526242062449455, -0.006859254091978073, -0.0010190146276727319, 0.02017909847199917, 0.02675146423280239, 0.010208775289356709, 0.018256569281220436, 0.0088674770668149, 0.01916567236185074, -0.010745295323431492, -0.00024334331101272255, 0.004567868076264858, -7.725277100689709e-05, 0.00015858066035434604, -0.028346119448542595, -0.039404384791851044, 0.00665433332324028, 0.02436693198978901, -0.01819695718586445, 0.018316183239221573, -0.01370360516011715, 0.0030179228633642197, -0.022205950692296028, -0.012429370544850826, 0.0123175960034132, -0.007157320622354746, -0.008584314025938511, -0.02293621376156807, 0.01989593543112278, 0.025589004158973694, 0.02491835504770279, -0.00452315853908658, 0.0040872362442314625, -0.016110491007566452, -0.000719551055226475, 0.008599217049777508, 0.006441961042582989, -0.012064239010214806, -0.0006599377375096083, -0.008301150053739548, -0.003941928967833519, 0.014806450344622135, 0.006356266792863607, 0.002595040947198868, -0.009038864634931087, -0.005227340385317802, -0.004083510488271713, -0.029225414618849754, 0.05997096747159958, 0.028286505490541458, -0.03201233595609665, -0.004415109287947416, 0.006605897564440966, 0.0023752169217914343, -0.011564978398382664, -0.0033327555283904076, -0.0032284322660416365, 0.011535171419382095, 0.00456041656434536, -0.014642514288425446, -0.027049530297517776, -0.011117878369987011, 0.0030607697553932667, -0.041192781180143356, 0.009083574637770653, -0.0419081412255764, 0.004690820816904306, 0.017243143171072006, 0.023830411955714226, 0.013763218186795712, -0.0009947967482730746, 0.013785572722554207, -0.006419606041163206, -0.0010218090610578656, 0.012257982976734638, -0.01745179109275341, -0.0015639173798263073, 0.018733475357294083, -0.004746708087623119, -0.01001503225415945, 0.012451726011931896, -0.000691141583956778, 0.0008671870455145836, 0.008465087041258812, 0.003934476990252733, -0.012257982976734638, 0.022325176745653152, -0.013815379701554775, 0.014553094282746315, -0.026647139340639114, -0.007980729453265667, 0.006818269845098257, -0.029866257682442665, -0.025439970195293427, -0.028539862483739853, 0.0006217479822225869, -0.008830218575894833, -0.02289150282740593, -0.02725817635655403, 0.010283292271196842, -0.0048286765813827515, 0.028480248525738716, 0.0007493576849810779, 0.02749663032591343, -0.005219888407737017, -0.01606578193604946, 0.019195478409528732, -0.036870818585157394, -0.012511339038610458, -0.006240766029804945, 0.010730392299592495, 0.005704246461391449, -0.002632299205288291, -0.011624591425061226, 0.02602120116353035, 0.004031348507851362, 0.011617139913141727, 0.010432325303554535, 0.0031911737751215696, -0.006553736049681902, 0.012310144491493702, -0.033621896058321, -0.007250466383993626, -0.008837670087814331, 0.007563435938209295, -0.008673733100295067, 0.004430012311786413, 0.010022483766078949, -0.00714986864477396, -0.0029843903612345457, 0.01597636193037033, -0.013882444240152836, -0.01861424930393696, -0.017675340175628662, 0.0096722561866045, -0.010655875317752361, -0.011885399930179119, 0.015484551899135113, -0.014344447292387486, -0.002246675780043006, 0.021997302770614624, 0.00026523254928179085, 0.01961277239024639, 0.017287854105234146, 0.020805038511753082, -0.0031744076404720545, -0.011945012956857681, -0.03204214200377464, 0.0015210703713819385, -0.0017064304556697607, -0.004266075789928436, -0.005044774617999792, -0.028942251577973366, -0.01040997076779604, -0.008606668561697006, -0.004329415038228035, -0.005398728419095278, 0.0414312370121479, 0.002174022141844034, 0.013755766674876213, -0.024024154990911484, -0.023174665868282318, -0.015827327966690063, 0.014769192785024643, -0.020700715482234955, 0.011319072917103767, 0.0070828041061758995, -0.008181924000382423, -0.020432455465197563, 0.014977838844060898, 0.00362150720320642, -0.013174536637961864, 0.030790263786911964, -0.0032116658985614777, 0.008122310973703861, 0.02090936154127121, -0.00374259683303535, 0.005342841148376465, -0.023875122889876366, -0.051237620413303375, -0.00011992517102044076, 0.0019011050462722778, 0.0018489434150978923, 0.04301098734140396, 0.0009431008365936577, -0.013487506657838821, -0.012183465994894505, 0.0016859383322298527, 0.011289266869425774, 0.029538385570049286, -0.012399564497172832, -0.0177349541336298, -0.00847253855317831, -0.003269416280090809, 0.02113291062414646, -0.01438915729522705, 0.008785508573055267, 0.005249695386737585, 0.02163962461054325, -0.0008294630097225308, -0.00044640107080340385, 0.014605255797505379, -0.01358437817543745, -0.0015043041203171015, 0.00847253855317831, -0.007347337901592255, -0.0017604549648240209, -0.006594720296561718, -0.019001735374331474, -0.017943600192666054, 0.003545127809047699, -0.023651571944355965, -0.007533629424870014, 0.008629024028778076, -0.0052683246321976185, 0.009292221628129482, -0.004444915801286697, 0.020328132435679436, 0.00023577520914841443, 0.0057936664670705795, 0.002485129050910473, 0.023249182850122452, -0.00038282907917164266, 0.008614120073616505, 0.015827327966690063, -0.00829369854182005, 0.020521875470876694, -0.005435986910015345, -0.0026956384535878897, -0.005857005715370178, 0.012861567549407482, 0.005033596884459257, 0.012116401456296444, 0.009985226206481457, 0.004135672003030777, 0.002129312139004469, -0.013107472099363804, 0.015208840370178223, -0.02454577200114727, -0.015723004937171936, 0.012980793602764606, 0.001372037106193602, 0.006453138310462236, 0.00153969950042665, -0.00400526775047183, 0.025127001106739044, -0.016751334071159363, -0.004791418090462685, 0.003941928967833519, -0.015171581879258156, -0.00566326268017292, 0.012600759044289589, 0.08101446181535721, 0.021654527634382248, 0.03201233595609665, -0.0053651961497962475, 0.0020175373647361994, 0.016378751024603844, -0.011065716855227947, -0.028659088537096977, -0.003440804546698928, -0.009493416175246239, -0.010760198347270489, 0.014091091230511665, -0.010424873791635036, -0.014500932767987251, 0.010395067743957043, 0.0043741250410676, -0.025767844170331955, 0.0009030482033267617, 0.02017909847199917, -0.009806386195123196, -0.015916747972369194, 0.002595040947198868, 0.008062697015702724, -0.013889896683394909, -0.01707920804619789, -0.021997302770614624, -0.007891309447586536, -0.012727437540888786, 0.03003019466996193, 0.02178865671157837, 0.012675276026129723, 0.003953106235712767, -0.0006557462038472295, -0.005465793423354626, 0.019374318420886993, 0.00939654465764761, -5.1637682190630585e-05, 0.002783195348456502, -0.000659006298519671, -0.011088071390986443, -0.011982271447777748, 0.02500777505338192, 0.01998535543680191, -0.01694507710635662, -0.0010450955014675856, -0.005801117978990078, -0.011795979924499989, -0.007183401379734278, 0.0008606668561697006, 0.004892015364021063, 0.01804792322218418, 0.017511403188109398, 0.00389721873216331, 0.019925741478800774, -0.015454744920134544, -0.01284666359424591, 0.010246033780276775, -0.01791379414498806, 0.025827458128333092, -0.00275711459107697, -0.005782489199191332, -0.003152052639052272, -0.0015033726813271642, -0.008785508573055267, -0.013234150595963001, 0.002451596548780799, 0.0006636635516770184, -0.0012397700920701027, 0.001801439095288515, -0.012615662068128586, 0.016110491007566452, 0.009247511625289917, 0.013919702731072903, -0.004564142320305109, 0.026825979351997375, 0.0037891697138547897, -0.003968009725213051, -0.0026509284507483244, 0.0067288498394191265, -0.013256505131721497, 0.012816857546567917, -0.0008578724809922278, -0.0024534594267606735, 0.011035909876227379, -0.013874992728233337, -0.013837735168635845, 0.003239609766751528, 0.0349930003285408, -0.002619258826598525, -0.003725830465555191, 0.0062333145178854465, -0.02523132413625717, 0.02643849328160286, -0.004217640031129122, 0.0015648488188162446, -0.00714986864477396, 0.006918867584317923, -0.031565237790346146, -0.002157256007194519, 0.014903321862220764, 0.0014297874877229333, 0.002270893659442663, -0.017720049247145653, -0.018524829298257828, 0.007697565946727991, -0.0007232768693938851, 0.00821918249130249, 0.0005425740964710712, 0.003733282210305333, 0.00921025313436985, 0.0003774732176680118, -0.0041841077618300915, -0.0074702901765704155, -0.014679772779345512, -0.03561893850564957, 0.0013282585423439741, -0.016647011041641235, 0.022325176745653152, -0.009158091619610786, -0.0016645147698000073, 0.0018778186058625579, -0.019284898415207863, 0.011803431436419487, -0.021937690675258636, -0.022265562787652016, -0.004113317001610994, -0.015782618895173073, 0.0023565879091620445, -0.01157988142222166, -0.023964542895555496, -0.026140427216887474, -0.0008592696976847947, -0.018018117174506187, -0.0029322286136448383, 0.010044839233160019, 0.0165873970836401, -0.015857134014368057, 0.01248153205960989, 0.001221140963025391, 0.0015406309394165874, 0.02053677849471569, 0.019076252356171608, 0.013107472099363804, -0.020089678466320038, -0.0039158477447927, -0.015193937346339226, -0.00714986864477396, -0.0034221753012388945, 0.011259459890425205, -0.01703449711203575, -0.014053832739591599, -0.011192395351827145, -0.031296975910663605, -0.01612539403140545, 0.01411344576627016, -0.011691655963659286, -0.012675276026129723, 0.004348044283688068, -0.011311621405184269, -0.009180446155369282, -0.02062619850039482, -0.026214944198727608, 0.0140463812276721, -0.036274686455726624, -0.005827199202030897, 0.006762382574379444, 0.029121091589331627, -0.020208904519677162, 0.002539153443649411, 0.01250388752669096, -0.01204188447445631, -0.01929980143904686, 0.019180575385689735, -0.00062035076553002, -0.015052355825901031, 0.011289266869425774, -0.012861567549407482, -0.009113381616771221, 0.01846521720290184, -0.0016822124598547816, -0.0001457731268601492, 0.0035227728076279163, 0.0148511603474617, 0.0004529212892521173, -0.014769192785024643, -0.00024474048404954374, -0.036274686455726624, -0.004299608524888754, -0.015350421890616417, -0.020044967532157898, -0.0018135480349883437, 0.0246351920068264, -0.0012956575956195593, -0.026557721197605133, -0.007120062131434679, -0.006699043326079845, -0.037377532571554184, 0.01360673364251852, -0.025827458128333092, -0.00812976248562336, -0.001724128145724535, -0.007466564420610666, 0.004590223077684641, -0.00207901350222528, 0.008688637055456638, -0.009187898598611355, 0.013368279673159122, -0.03582758828997612, 0.008338408544659615, -0.0008112996001727879, -0.06319008767604828, 0.000630596827249974, -0.0035004178062081337, -0.0059576029889285564, 0.002378942910581827, 0.010879425331950188, 0.003701612586155534, 0.011333976872265339, -0.009009058587253094, 0.001948609366081655, -0.0016356395790353417, -0.003440804546698928, -0.008435280062258244, -0.01782437413930893, 0.014098542742431164, 0.006468041799962521, 0.0003702544199768454, -3.238270664951415e-06, 0.006717672571539879, -0.02168433368206024, -0.012243079021573067, -0.016363848000764847, 0.0032917712815105915, 0.030790263786911964, 0.017675340175628662, -0.019329609349370003, 0.012973342090845108, -0.00985854770988226, 0.015573971904814243, -0.020760327577590942, -0.015261001884937286, 0.0071386913768947124, 0.0018433546647429466, -0.004243720788508654, 0.0017567290924489498, -0.0018936534179374576, 0.013591829687356949, 0.0010739706922322512, 0.008964348584413528, -2.7201473130844533e-05, 0.010357809253036976, -0.00230815215036273, -0.0032451984006911516, -0.003893492976203561, 0.005391276907175779, 0.005640907678753138, -0.0032470612786710262, -0.0067288498394191265, 0.010894328355789185, 0.009262414649128914, -0.005622278433293104, -0.006859254091978073, 0.003688572207465768, 0.003302948782220483, -0.00474298233166337, 0.014702127315104008, -0.009992677718400955, -0.028793219476938248, -0.024992872029542923, 0.03090948984026909, -0.0149703873321414, -0.014038929715752602, 0.015767715871334076, -0.0015825465088710189, 0.002475814428180456, 0.015544164925813675, -0.019597869366407394, 0.004921822343021631, -0.0013431619154289365, -0.02123723365366459, -0.025022678077220917, -0.014493481256067753, -0.008159568533301353, -0.015380228869616985, 0.0004543184768408537, 0.003206077264621854, 0.010097000747919083, 0.02234007976949215, 0.028033148497343063, 0.006665511056780815, -0.025156807154417038, 0.0010963256936520338, -0.014530738815665245, -0.01606578193604946, -0.006259395275264978, 0.013159633614122868, -0.003353247418999672, -0.024486158043146133, -0.010730392299592495, 0.025171712040901184, -0.011371234431862831, -0.013211795128881931, 0.019627675414085388, 0.01606578193604946, 0.0004098413628526032, -0.014523287303745747, 0.014247575774788857, -0.0006650607683695853, -0.0035153210628777742, -0.0036177814472466707, -0.0037947583477944136, -0.011445751413702965, 0.030417680740356445, 0.012988245114684105, -0.021058393642306328, 0.0014400335494428873, -0.013077665120363235, -0.0010376437567174435, -0.0037370079662650824, 0.00486966036260128, 0.008122310973703861, 0.01915076933801174, -0.022131433710455894, -0.00812976248562336, -0.011065716855227947, 0.0087482500821352, 0.007444209419190884, 0.0077050174586474895, -0.006270573008805513, -0.03609584644436836, 0.006486671045422554, -0.006333911791443825, -0.01736237108707428, 0.015812424942851067, -0.01630423404276371, 0.011341428384184837, -0.02943406067788601, -0.018271472305059433, -0.014262479729950428, 0.00374259683303535, -0.003725830465555191, -0.0105888107791543, 0.02524622716009617, -0.00023007004347164184, -0.009493416175246239, 0.002660243073478341, -0.018182052299380302, -0.00360287819057703, -0.004329415038228035, 0.00486966036260128, 0.016781140118837357, 0.005041048862040043, 0.0034463931806385517, -0.001221140963025391, -0.0034035462886095047, 0.010983748361468315, 0.009962870739400387, 0.00714986864477396, 0.002216869266703725, -0.0002601095475256443, 0.022593436762690544, 0.0012965890346094966, -0.007492645177990198, 0.00821918249130249, -0.02099878154695034, -0.0038487829733639956, -0.009970322251319885, 0.019910838454961777, 0.0061066364869475365, 0.013800476677715778, -0.011535171419382095, -0.023919831961393356, -0.01971709541976452, -0.010372712276875973, -0.014925677329301834, 0.007883857935667038, -0.008763153105974197, 0.014649965800344944, 0.01075274683535099, -0.03058161772787571, 0.022205950692296028, 0.028703799471259117, -0.010559003800153732, -0.013114923611283302, -0.021773753687739372, 0.010335453785955906, -0.012831760570406914, 0.014016574248671532, -0.00628547603264451, 0.0033253037836402655, -0.02736249938607216, 0.015164130367338657, -0.006188604515045881, -0.015141775831580162, 0.0014195414260029793, -0.004608852323144674, 0.016155201941728592, 0.008614120073616505, 0.03058161772787571, 0.008420377038419247, 0.00957538466900587, 0.021490590646862984, 0.02205691672861576, -0.005327937658876181, 0.013085116632282734, 0.003239609766751528, 0.006971029099076986, 0.008532151579856873, -0.002157256007194519, -0.008614120073616505, -0.010722940787672997, -0.012049335986375809, -0.01727295108139515, -0.007779534440487623, -0.009821289218962193, 0.005454616155475378, 0.0019225286087021232, -0.0017222651513293386, 0.017049400135874748, -0.022504016757011414, 0.007660307455807924, 0.00929967314004898, 0.00101622031070292, 0.0036177814472466707, 0.009933064691722393, 0.010916683822870255, 0.007090255618095398, 0.006464316044002771, 0.02040264755487442, -0.018077729269862175, 0.0018256569746881723, -0.009016510099172592, 0.00013017120363656431, -0.005417357664555311, 0.008211730979382992, -0.010514293797314167, 0.0018321771640330553, 0.014083639718592167, -0.005037323106080294, -0.011006103828549385, -0.02670675329864025, -0.019463738426566124, -0.007690114434808493, -0.005555213429033756, 0.000965921557508409, 0.010953942313790321, 0.0010795594425871968, 0.010298195295035839, 0.0037556372117251158, -0.0007111679296940565, 0.004627481568604708, -0.0009594013681635261, -0.00711633637547493, 0.0010348494397476315, -0.0040872362442314625, -0.013725959695875645, -0.012205820530653, -0.007142417132854462, 0.011058265343308449, 0.029091285541653633, -0.004307060036808252, 0.016781140118837357, -0.0015182759379968047, 0.0027887842152267694, 0.011892851442098618, 0.011497912928462029, 0.004597675055265427, -0.0010953941382467747, -0.005875634960830212, 0.016706624999642372, 0.02293621376156807, -0.012108949013054371, -0.007861502468585968, 0.004478448536247015, -0.012719985097646713, -0.007421854417771101, 0.008740798570215702, 0.022667953744530678, 0.028077859431505203, -0.008971800096333027, 0.01429973728954792, 0.013181988149881363, 0.00283163134008646, -0.013412989675998688, -0.023129956796765327, -0.01800321415066719, -0.014582901261746883, 0.016334041953086853, -0.008561958558857441, 0.0011615277035161853, -0.0007656581583432853, 0.020521875470876694, 0.018062826246023178, 0.006602171808481216, -0.007876405492424965, -0.0034463931806385517, -0.010164066217839718, 0.00037421309389173985, -0.016155201941728592, 0.012451726011931896, -0.010544100776314735, 0.0016225992003455758, 0.014269931241869926, 0.0016263250727206469, 0.0050224196165800095, -0.0061587980017066, -0.007451660931110382, 0.009962870739400387, 0.00904631707817316, 0.00048622090253047645, 0.005894263740628958, -0.0070828041061758995, 0.009187898598611355, 0.02137136459350586, -0.011900302954018116, 0.013994219712913036, -0.0011047087609767914, -0.0011876084608957171, 0.0007945333491079509, 0.0078018889762461185, -0.00424744701012969, 0.01093903835862875, -0.008301150053739548, 0.03853999078273773, -0.01998535543680191, 0.017153723165392876, 0.008710991591215134, -0.018405603244900703, -0.002300700405612588, -0.0037276935763657093, 0.007503822911530733, -0.0065611875616014, -0.012071691453456879, 0.018807992339134216, -0.013293763622641563, -0.01342044211924076, 0.0014605255564674735, -0.013711056672036648, 0.0010842166375368834, 0.00275711459107697, 0.003833879716694355, 0.010931586846709251, -0.0271687563508749, 0.0016710349591448903, -0.015320614911615849, -0.027988439425826073, -0.008815315552055836, 0.014262479729950428, -0.012980793602764606, -0.014150704257190228, 0.0022951115388423204, -0.002485129050910473, 0.0011084346333518624, -0.022816985845565796, -0.004575320053845644, -0.015261001884937286, 0.008785508573055267, -0.011564978398382664, 0.03029845468699932, 0.001414884114637971, -0.006706494837999344, -0.0020138113759458065, -0.013040406629443169, 0.0019802788738161325, 0.0024534594267606735, 0.0036345478147268295, 0.009895806200802326, 0.004254898522049189, -0.014821354299783707, -0.015872038900852203, -0.009791483171284199, 0.015812424942851067, -0.010119356215000153, -0.009262414649128914, -0.00012737682845909148, -0.00985854770988226, 0.014880967326462269, -0.005965054966509342, -0.0067400275729596615, 0.011274362914264202, -0.007269095629453659, -0.011460654437541962, -0.004832402337342501, -0.0022913857828825712, -0.006449412554502487, 0.011445751413702965, -0.003720241831615567, 0.005689343437552452, 0.016080684959888458, 0.0046647400595247746, 0.009076123125851154, 0.01448602881282568, -0.00884512159973383, -0.0008853505132719874, 0.01142339687794447, -0.014105994254350662, 0.007898760959506035, 0.016110491007566452, 0.001801439095288515, 0.0017157449619844556, -0.02022380754351616, 0.004105865489691496, -0.010059742256999016, 0.013837735168635845, 0.010171517729759216, 0.028659088537096977, 0.03588720038533211, 0.015529261901974678, -2.3737615265417844e-05, 0.016185007989406586, -0.00847253855317831, 0.011043361388146877, -0.0018563950434327126, 0.006184878759086132, 0.014031478203833103, -0.011907754465937614, -0.00684062484651804, 0.008502345532178879, 0.00964990071952343, 0.01989593543112278, -0.01084961835294962, 0.0014987153699621558, -0.007228111382573843, -0.007060449104756117, -0.009702063165605068, 0.0028223167173564434, -0.010670778341591358, -0.00849489402025938, 0.021356461569666862, 0.016736431047320366, -0.01121474988758564, -0.004303334280848503, -0.014739385806024075, 0.010611165314912796, -0.018986832350492477, -0.0037519114557653666, 0.007310079410672188, -0.00680336682125926, -0.004109591245651245, 0.02013438753783703, 0.02068581059575081, -0.029776837676763535, -0.026080813258886337, 0.01617010496556759, -0.02219104766845703, -0.012630566023290157, 0.0017883987165987492, 0.00757461367174983, 0.008442732505500317, -0.007034367881715298, -0.0011866770219057798, -0.008651378564536572, 0.005041048862040043, -0.006482945289462805, 0.0036513139493763447, 0.03681120648980141, 0.004035074729472399, 0.007388322148472071, 0.002015674253925681, -0.011646945960819721, 0.017511403188109398, 0.0024776773061603308, -0.004977709613740444, 0.0004685231833718717, -0.02569332718849182, -0.013390635140240192, 0.006188604515045881, -0.010559003800153732, -0.02514190413057804, -0.006885334849357605, -0.011013555340468884, -0.013591829687356949, -0.02763075940310955, 0.01584223099052906, 0.020641101524233818, 0.002874478232115507, -0.0019076252356171608, -0.0020305777434259653, -0.004631207324564457, -0.0006352541386149824, -0.005249695386737585, 0.0069449483416974545, 0.005775037221610546, -0.014217769727110863, -7.997437023732346e-06, 0.004325689282268286, 0.01132652536034584, -8.47626433824189e-05, -0.0039382027462124825, -0.02496306411921978, 0.006028393749147654, 0.003826427971944213, 0.022593436762690544, -0.015052355825901031, -0.007626775186508894, 0.0016021071933209896, 0.01661720499396324, -0.010447229258716106, 0.0035097324289381504, -0.0237111859023571, -0.007086529862135649, 0.0035004178062081337, -0.007548532914370298, -0.012220724485814571, -0.0009021167061291635, -0.013442796654999256, -0.005074581131339073, 0.000976167619228363, 0.010432325303554535, 0.0053540184162557125, 0.008256440982222557, -0.016080684959888458, -0.038987092673778534, 0.018301280215382576, 0.02247421070933342, -0.005871909204870462, -0.006386073771864176, 0.007462838664650917, 0.0054620676673948765, 0.004586497321724892, 0.011259459890425205, -0.014456222765147686, 0.025589004158973694, -0.002153530018404126, -0.028495151549577713, -0.0025745488237589598, 0.008860024623572826, -0.010745295323431492, 0.016930174082517624, -0.004631207324564457, 0.012116401456296444, -0.001677555264905095, 0.001546219689771533, 0.02436693198978901, -0.010708036832511425, 0.008919638581573963, 0.013919702731072903, -0.03758617863059044, 0.004713175818324089, 0.013010600581765175, -0.011945012956857681, -0.009664804674685001, 0.0030700843781232834, -0.01824166625738144, -0.002431104425340891, -0.017481597140431404, -0.007228111382573843, 0.005920344963669777, 0.0016514743911102414, -0.0019094881135970354, -0.03326421603560448, -0.0012500161537900567, -0.002883792854845524, 0.013643991202116013, -0.02403905801475048, 0.008092503994703293, 0.007440483663231134, 0.008263892494142056, 0.019493546336889267, 0.006423331797122955, 0.008606668561697006, 0.0048174988478422165, -0.027347596362233162, 0.021073298528790474, -0.0015136186266317964, 0.016468171030282974, 0.005816021468490362, -0.02251891978085041, -0.0050224196165800095, 0.007347337901592255, 0.03427764028310776, 0.004344318527728319, 0.02670675329864025, -0.010268389247357845, 0.001965375617146492, 0.002304426161572337, -0.003830153727903962, -0.006412154529243708, -0.008122310973703861, -0.03150562196969986, 0.0005355881294235587, 0.00018233283481094986, -0.00849489402025938, -0.007216933649033308, 0.005499325692653656, -0.012250530533492565, 0.0023360957857221365, 0.0016645147698000073, 0.012250530533492565, 0.026975013315677643, -0.0088674770668149, 0.002228046767413616, -0.014396609738469124, -0.020328132435679436, 0.016408557072281837, 0.0005793666350655258, 0.005372647661715746, -0.000170223880559206, 0.004489625804126263, -0.003424038179218769, 0.017883986234664917, -0.009895806200802326, -0.009545577690005302, -0.0036438622046262026, 0.012511339038610458, 0.0255591981112957, 0.009500867687165737, -0.009165543131530285, 0.00033066747710108757, 0.0046796430833637714, -0.007093981374055147, 0.026363976299762726, -0.003440804546698928, -0.00248140306212008, 0.008927090093493462, 0.003507869550958276, -0.04399460554122925, -0.008725895546376705, 0.003506006672978401, -0.019374318420886993, 0.02335350587964058, -0.0029974307399243116, 0.01229524053633213, -0.01870366930961609, 0.009627546183764935, 0.0018265884136781096, 0.0105962622910738, 0.01815224625170231, 0.012086594477295876, -0.0262596532702446, -0.02979174070060253, -0.02128194458782673, 0.002384531544521451, 0.025156807154417038, -0.017243143171072006, -0.005499325692653656, 0.00419155927374959, -0.022623242810368538, -0.015365324914455414, -0.0003355576191097498, 0.018018117174506187, 0.01855463534593582, -0.015350421890616417, 0.01512687187641859, 0.008256440982222557, -0.0023826686665415764, -0.0027887842152267694, -0.004538061562925577, 0.003377465298399329, -0.011363782919943333, 0.005014968104660511, -0.028286505490541458, 0.005242243409156799, -0.03851018473505974, 0.021267041563987732, 0.020149292424321175, -0.009135736152529716, 0.013748315162956715, -0.019419029355049133, -0.012660372070968151, -0.008211730979382992, -0.007004561368376017, 0.00342031242325902, -0.0008457635412923992, 0.024113574996590614, 0.006024667993187904, -0.010119356215000153, -0.002988116117194295, -0.0022354982793331146, 0.008710991591215134, 0.0046796430833637714, 0.004239995032548904, 0.0026248476933687925, -0.0027943728491663933, -0.009910709224641323, 0.03204214200377464, 0.007928567007184029, 0.008882380090653896, -0.004675917327404022, -0.005182630382478237, -0.03615545853972435, -0.00591661874204874, -0.012578403577208519, 0.007477742154151201, 0.01630423404276371, 0.019344512373209, -0.0067400275729596615, -0.006076829507946968, 0.014374254271388054, 0.004940451122820377, 0.012973342090845108, 0.01690036803483963, -0.0024404190480709076, 0.004023896995931864, 0.01360673364251852, 0.004918096121400595, -0.017094111070036888, -0.005190081894397736, 0.0048584830947220325, -0.008725895546376705, 0.015857134014368057, 0.012310144491493702, 0.0019746902398765087, -0.0009547440567985177, -0.0032582387793809175, -0.013882444240152836, 0.009754224680364132, -0.01084961835294962, -0.022131433710455894, -0.007630500942468643, -0.010417422279715538, 0.0211925245821476, -0.008263892494142056, 0.008666281588375568, -0.014992741867899895, 0.012615662068128586, -0.0005639976006932557, -0.013949509710073471, 0.008912187069654465, -0.008964348584413528, -0.010737843811511993, 0.005458341911435127, 0.019925741478800774, -0.01183323748409748, -0.021386267617344856, 0.01130416989326477, -0.012518790550529957, -0.031237363815307617, 0.0036643543280661106, 0.029717223718762398, -0.0200300645083189, 0.006155072245746851, -0.017377274110913277, -0.004336866550147533, -0.011162588372826576, -0.016140298917889595, 0.010544100776314735, -0.0007172223995439708, -0.0076081459410488605, 0.012682727538049221, 0.018480120226740837, -0.007936019450426102, 0.007958373986184597, -0.0177349541336298, 0.0007852187845855951, 0.00031692846096120775, 0.00801053550094366, 0.006110362242907286, -0.0047616115771234035, 0.002861437853425741, 0.03049219772219658, -0.007529903668910265, -0.012377209030091763, 0.04107355698943138, -0.003353247418999672, -0.012280337512493134, 0.02174394764006138, -0.023696282878518105, 0.010745295323431492, -0.011788527481257915, 0.0037686775904148817, 0.006956125609576702, -0.015872038900852203, 0.0031744076404720545, -0.008152117021381855, 0.009359286166727543, 0.02114781364798546, -0.007876405492424965, -0.024560675024986267, 0.012682727538049221, -0.02690049633383751, -0.0038413312286138535, -0.004608852323144674, -0.04274272918701172, 0.003243335522711277, -0.023055439814925194, 0.004236269276589155, -0.00548069691285491, -0.013532216660678387, 0.014731934294104576, 0.012369757518172264, 0.0007968620047904551, 0.006583542563021183, -0.012384660542011261, 0.010790005326271057, -0.02081994153559208, -0.011885399930179119, 0.02113291062414646, 0.01570810191333294, 0.019284898415207863, 0.007626775186508894, -0.0014921951806172729, -0.0020547956228256226, -0.017004691064357758, 0.00041170426993630826, -0.007876405492424965, 0.011758721433579922, -0.0027161305770277977, 0.0221016276627779, 0.0002181939489673823, -0.0005761065403930843, 0.010782553814351559, 0.0039158477447927, 0.018763283267617226, 0.0008765016682446003, 0.013837735168635845, -0.017287854105234146, 0.007280272897332907, -0.015514358878135681, 0.0076193236745893955, 0.00634508952498436, -0.009784030728042126, -0.002626710571348667, -0.009784030728042126, -0.005465793423354626, -0.004493351560086012, -0.005126742646098137, -0.006460590288043022, 0.004333140794187784, -0.007719920948147774, 0.016378751024603844, 0.0023752169217914343, 0.007824243977665901, -0.013874992728233337, -0.015529261901974678, -0.008479990065097809, 0.014396609738469124, -0.021669430658221245, -0.00030109367799013853, -0.010983748361468315, -0.01183323748409748, -0.008740798570215702, -0.01441151276230812, -0.012429370544850826, 0.00252797594293952, -0.0032880455255508423, -0.023457828909158707, 0.010730392299592495, 0.0030793990008533, 0.02114781364798546, -0.005924070719629526, -0.007447935175150633, -0.017302757129073143, -0.002337958663702011, 0.012742340564727783, -0.012198369018733501, 0.00801053550094366, -0.00025591798475943506, -0.014336995780467987, -0.018658960238099098, -0.006006038747727871, 0.003474337048828602, 0.020611295476555824, 0.010536649264395237, -0.007131239864975214, -0.016885465011000633, -0.01870366930961609, -0.00019781831360887736, 0.017928697168827057, -0.003235883777961135, -0.0046125780791044235, 0.037049658596515656, 0.0029937047511339188, 0.0008159569115377963, 0.006415880285203457, 0.012272886000573635, -0.03058161772787571, 0.020521875470876694, 0.011184942908585072, -0.00856941007077694, -0.003029100364074111, 0.010730392299592495, -0.010782553814351559, 0.024307318031787872, 0.011170039884746075, 0.009105930104851723, 0.009918160736560822, -0.0002719856274779886, 0.0031278347596526146, -0.00013902004866395146, 0.0177349541336298, 0.011535171419382095, -0.0026304363273084164, 0.0002915462537202984, -0.004947903100401163, 0.011199846863746643, -0.00895689707249403, 0.01213875599205494, -0.014895870350301266, -0.011259459890425205, -0.017064303159713745, -0.03630449250340462, -0.009545577690005302, 0.021386267617344856, -0.004239995032548904, -0.013971864245831966, -0.007559710182249546, 0.012697630561888218, -0.007500097155570984, -0.011333976872265339, -0.01522374339401722, 0.017213337123394012, 0.010104452259838581, -0.017347466200590134, 0.0030738101340830326, 0.012652920559048653, 0.0014707716181874275, 0.02150549367070198, -0.02527603507041931, 0.002153530018404126, -0.012012077495455742, -0.029493674635887146, 0.014493481256067753, -0.00948596466332674, -0.011691655963659286, 0.0020212631206959486, 0.008688637055456638, 0.00043452499085105956, -0.014180511236190796, -0.007764630950987339, 0.012250530533492565, -0.0067698340862989426, -0.035857394337654114, -0.0023398215416818857, 0.005551487673074007, -0.016140298917889595, 0.0041841077618300915, 0.007861502468585968, -0.011564978398382664, 0.008465087041258812, -0.005871909204870462, 0.011035909876227379, 0.01476174034178257, 0.012079142965376377, -0.0044747223146259785, 0.006617075297981501, 0.0050224196165800095, -0.006617075297981501, -0.007064174860715866, 0.015872038900852203, 0.0033290295396000147, -0.004839853849261999, -0.013576926663517952, -0.002090191002935171, -0.016974883154034615, 0.020432455465197563, 0.014277382753789425, 0.011907754465937614, 0.02426260896027088, 0.0038450572174042463, -0.0011922657722607255, 0.014396609738469124, 0.023606862872838974, 0.02265305072069168, 0.012615662068128586, 0.021952593699097633, 0.016140298917889595, -0.025305841118097305, -0.0015480825677514076, 0.005275776144117117, 0.01676623709499836, 0.0024366932921111584, -0.011110426858067513, 0.01870366930961609, -0.0007805615314282477, -0.011095523834228516, 0.0007256055250763893, -0.007418128661811352, 0.030700843781232834, -0.02113291062414646, -0.0005262735649012029, 0.012421919032931328, 0.006855528336018324, 0.026766367256641388, -0.014396609738469124, 0.021892979741096497, 0.0033159891609102488, -0.00250934693031013, -0.013874992728233337, -0.022638145834207535, -8.528659236617386e-05, -0.03287672996520996, 0.015767715871334076, 0.00948596466332674, 0.008614120073616505, -0.02478422410786152, -0.02482893504202366, 0.008248988538980484, -0.013912251219153404, -0.0014866064302623272, 0.003159504383802414, -0.003273142036050558, 0.00456041656434536, -0.004236269276589155, -0.009366737678647041, 0.002052932744845748, -0.006851802580058575, -0.00904631707817316, 0.0079434709623456, -0.012183465994894505, -0.04378595948219299, -0.026960110291838646, 0.00912083312869072, 0.008800411596894264, -0.011572429910302162, 0.02906147763133049, 0.008181924000382423, 0.0027943728491663933, -0.008167020976543427, -0.020372841507196426, -0.014731934294104576, -0.02214633673429489, 0.018271472305059433, -0.004210188519209623, -0.002095779636874795, 0.00711633637547493, 0.027988439425826073, 0.017749857157468796, 0.0017632492817938328, -0.00840547401458025, -0.005894263740628958, 0.006542558316141367, -0.002829768229275942, 0.0063972510397434235, -0.009336931630969048, -0.002548468066379428, -0.005227340385317802, 0.002267167903482914, -0.019627675414085388, -0.009038864634931087, -0.017883986234664917, 0.008576861582696438, 0.018673863261938095, -0.003034688998013735, -0.012682727538049221, 0.013360828161239624, 0.007593242917209864, 0.032399822026491165, -0.0015955868875607848, -0.009031413123011589, -0.00643450953066349, -0.0033923687878996134, 0.009918160736560822, -0.007809340953826904, -0.036960240453481674, -0.011378686875104904, 0.00960519164800644, -0.0031874480191618204, -0.008912187069654465, 0.0017176078399643302, 0.01349495816975832, -0.02681107632815838, 0.015022548846900463, 0.03174407780170441, -0.004638658836483955, 0.013539668172597885, -0.00446727080270648, 0.01087197382003069, -0.004854757338762283, 0.00280368747189641, 0.003941928967833519, -0.011646945960819721, -0.017168628051877022, 0.006531381048262119, -1.5427267499035224e-06, -0.011199846863746643, -0.009813837707042694, 0.00761187169700861, 0.0008224771008826792, -0.02183336764574051, 0.007459112908691168, 0.020566584542393684, 0.026587527245283127, -0.008234085515141487, -0.011371234431862831, 0.0014605255564674735, -0.023740991950035095, -0.008986703120172024, 0.04020916298031807, 0.0105888107791543, -0.004083510488271713, 0.007734824437648058, -0.014664868824183941, -0.005108113866299391, -0.030611423775553703, -0.0008792959852144122, 0.046170491725206375, 0.020044967532157898, 0.015693198889493942, -0.02330879680812359, -0.008099955506622791, 0.011363782919943333, -0.012645469047129154, 0.009217704646289349, 0.011810882948338985, 0.0039009444881230593, 0.0037891697138547897, 0.036960240453481674, 0.01764553412795067, 0.005458341911435127, -0.01222817599773407, -0.0076752109453082085, -0.013137278147041798, 0.0030738101340830326, 0.02749663032591343, 0.00400526775047183, -0.005376373417675495, -0.0016626518918201327, -0.005812295712530613, 0.019135866314172745, -0.0004624687135219574, 0.017943600192666054, -0.008524700067937374, -0.008651378564536572, -0.004564142320305109, 0.015365324914455414, 0.010253485292196274, -0.0023696282878518105, -0.007764630950987339, -0.002421789802610874, -0.0009454294922761619, 0.006997109856456518, 0.0010572044411674142, 0.00902396161109209, -0.012794502079486847, 0.0023901204112917185, -0.01503745187073946, 0.0028521232306957245, 0.001280754222534597, 0.02736249938607216, -0.015111968852579594, -0.006538832560181618, -0.008174472488462925, 0.0064941225573420525, 0.001657063141465187, -0.005529132671654224, 0.01503745187073946, -0.001271439716219902, -0.011371234431862831, 0.0016645147698000073, 0.021803559735417366, -0.002861437853425741, 0.012056787498295307, -0.007500097155570984, 0.001288205967284739, -0.008785508573055267, -0.011892851442098618, -0.006583542563021183, 0.008338408544659615, -0.0031539155170321465, -0.006181153003126383, 0.02311505191028118, 0.003340207040309906, -0.006047022994607687, -0.005074581131339073, -0.012645469047129154, -0.0025969038251787424, -0.007950922474265099, -0.007134965620934963, -0.013837735168635845, 0.026483204215765, 0.01906134933233261, 0.014038929715752602, 0.008651378564536572, 0.019597869366407394, -0.0005756408208981156, 0.003779855091124773, 0.002582000568509102, 0.009560481645166874, 0.0031706818845123053, 0.02487364411354065, 0.004351770039647818, -0.0025969038251787424, -0.00693004485219717, 0.0036103297024965286, 0.003779855091124773, 0.012734889052808285, 0.03648333251476288, -0.004422560799866915, -0.0021442153956741095, 0.013204343616962433, 0.00973932072520256, 0.00252797594293952, 0.01001503225415945, 0.019970452412962914, 0.003571208566427231, -0.0019746902398765087, -0.0011717737652361393, -0.0031017540022730827, -0.002613670192658901, 0.03150562196969986, -0.0105962622910738, -0.0009621957433409989, -0.002535427687689662, 0.018182052299380302, 0.009135736152529716, 0.010246033780276775, 0.005544035695493221, 0.01185559295117855, 0.0034389416687190533, 0.011892851442098618, -0.011408492922782898, -0.010812359862029552, 0.002723582088947296, 0.0246351920068264, 0.02040264755487442, -0.006814544089138508, -0.007220659404993057, 0.029299931600689888, -0.007582065183669329, -0.007257917895913124, 0.015723004937171936, -0.005719149950891733, 0.006516477558761835, 0.011669301427900791, 0.01549945492297411, 0.004217640031129122, -0.02068581059575081, 0.022354982793331146, -0.04065626487135887, 0.0067810118198394775, -0.0012919317232444882, -0.02242949977517128, -0.021803559735417366, -0.00702319061383605, 0.022489113733172417, 0.0010041113710030913, 0.0012071691453456879, 0.01013425923883915, 0.00821918249130249, -0.0020212631206959486, -0.020983878523111343, -0.001100051449611783, 0.006128991488367319, 0.015410034917294979, 0.0008140939753502607, -0.00766775943338871, -0.003930751234292984, -0.012913729064166546, -0.01524609886109829, 0.009441254660487175, 0.0026546542067080736, 0.01478409580886364, 0.01906134933233261, 8.930350304581225e-05, 0.010149162262678146, 0.0068667056038975716, -0.005350292660295963, 0.002065973123535514, 0.0037109272088855505, 0.0023957090452313423, 0.027466822415590286, 0.012198369018733501, 0.00038259621942415833, -0.007313805632293224, -0.013509861193597317, 0.0050634038634598255, 0.017258048057556152, -0.012898825109004974, 0.0021311750169843435, -0.0014754289295524359, -0.020328132435679436, 0.0030533182434737682, -0.008114858530461788, 0.009202801622450352, -0.010730392299592495, 0.008807863108813763, 0.0074851936660707, 0.025827458128333092, -0.007433032151311636, 0.02390492893755436, 0.0024534594267606735, -0.021892979741096497, 0.027973536401987076, 0.011572429910302162, 0.0031241090036928654, 0.00018710654694586992, -0.024814032018184662, 0.0005304650985635817, -0.010469583794474602, 0.004478448536247015, 0.012123852968215942, 0.020372841507196426, 0.007131239864975214, 0.030522003769874573, 0.013211795128881931, 0.01049939077347517, 0.007157320622354746, -0.005447164177894592, -0.009150640107691288], 'id': '9f8e3b43-f887-43f6-a39b-9a0670b114d6', '_distance': 1.0564557313919067}), Document(page_content='33 Dynamics products and cloud services revenue growth Revenue from Dynamics products and cloud services, \\nincluding Dynamics 365, comprising a set of intelligent, \\ncloud -based applications across ERP, CRM, Customer \\nInsights, Power Apps, and Power Automate; and on -\\npremises ERP and CRM applications \\n \\nLinkedIn revenue growth Revenue from LinkedIn, including Talent Solutions, \\nMarketing Solutions, Premium Subscriptions, and Sales \\nSolutions \\n \\nServer products and cloud services revenue growth Revenue from Server products and cloud services, \\nincluding Azure and other cloud services; SQL Server, \\nWindows Server, Visual Studio, System Center, and \\nrelated Client Access Licenses (“CALs”); and Nuance and \\nGitHub \\nMore Personal Computing \\nMetrics related to our More Personal Computing segment assess the performance of key lines of business within this \\nsegment. These metrics provide strategic product insights which allow us to assess the performance across our \\ncommercial and consumer businesses. As we have diversity of target audiences and sales motions within the Windows \\nbusiness, we monitor metrics that are reflective of those varying motions. \\n \\nWindows OEM revenue growth Revenue from sales of Windows Pro and non -Pro licenses sold \\nthrough the OEM channel \\n \\nWindows Commercial products and cloud \\nservices revenue growth Revenue from Windows Commercial products and cloud services, \\ncomprising volume licensing of the Windows operating system, \\nWindows cloud services, and other Windows commercial offerings \\n \\nSurface revenue growth Revenue from Surface devices and accessories \\n \\nXbox content and services revenue growth Revenue from Xbox content and services, comprising first - and third -\\nparty content (including games and in -game content), Xbox Game \\nPass and other subscriptions, Xbox Cloud Gaming, third -party disc \\nroyalties, advertising, and other cloud services \\n \\nSearch and news advertising revenue, \\nexcluding TAC, growth Revenue from search and news advertising excluding traffic \\nacquisition costs (“TAC”) paid to Bing Ads network publishers and \\nnews partners \\nSUMMARY RESULTS OF OPERATIONS \\n \\n(In millions, except percentages and per share amounts) 2022 2021 Percentage \\nChange \\n \\nRevenue $ 198,270 $ 168,088 18% \\nGross margin 135,620 115,856 17% \\nOperating income 83,383 69,916 19% \\nNet income 72,738 61,271 19% \\nDiluted earnings per share 9.65 8.05 20% \\n \\nAdjusted net income (non -GAAP) 69,447 60,651 15% \\nAdjusted diluted earnings per share (non -GAAP) 9.21 7.97 16% \\nAdjusted net income and adjusted diluted earnings per share (“EPS”) are non -GAAP financial measures which exclude \\nthe net income tax benefit related to transfer of intangible properties in the first quarter of fiscal year 2022 and the', metadata={'vector': [0.04153840243816376, -0.017145821824669838, -0.008022157475352287, 0.0258274357765913, 0.0013270620256662369, -0.009420781396329403, -0.06156843528151512, 0.05026349425315857, -0.025783956050872803, 0.019667694345116615, 0.05687253549695015, -0.03695845231413841, 0.014725406654179096, -0.03423367068171501, -0.07896064221858978, 0.0400310754776001, -0.01581241935491562, -0.003212124342098832, 0.04469798505306244, 0.023580942302942276, -0.04177029803395271, 0.015102238394320011, -0.012102081440389156, 0.03153787925839424, -0.0037791829090565443, -0.012254263274371624, 0.010775924660265446, -0.002246494172140956, 0.03330608457326889, 0.015116731636226177, 0.028044942766427994, -0.012573120184242725, -0.013819562271237373, -0.025378137826919556, 0.03388582542538643, -0.00810187216848135, 0.0324074886739254, -0.04933591187000275, 0.06446713209152222, -0.014544238336384296, -0.028566710650920868, 0.01982712186872959, -0.0008188833598978817, 0.05707544460892677, 0.004105286672711372, -0.012551380321383476, -0.005460429936647415, 0.015247173607349396, 0.01972566731274128, -0.0035599686671048403, -0.029943592846393585, -0.028218865394592285, -0.0023986760061234236, 0.009058443829417229, 0.010848392732441425, 0.006580053828656673, 0.06713394075632095, 0.014435537159442902, 0.01160205528140068, -0.01705886237323284, -0.005819144658744335, -0.009464262053370476, 0.017841510474681854, -0.006464105565100908, -0.024262137711048126, 0.006902534514665604, -0.007109066937118769, -0.0016232732450589538, 0.008449716493487358, -0.023609928786754608, -0.016290705651044846, -0.033711906522512436, 0.010609249584376812, 0.020812680944800377, -0.008696106262505054, -0.021508369594812393, 0.0037465726491063833, 0.005884365178644657, 0.024421565234661102, 0.007630833424627781, 0.0063300407491624355, 0.04356749355792999, 0.009920807555317879, -0.003201254177838564, 0.0193343423306942, -0.0165226012468338, -0.017015380784869194, -0.08748283237218857, -0.01674000360071659, 0.004953157156705856, 0.006536573171615601, -0.0034585141111165285, 0.057104431092739105, -0.03887159377336502, 0.011102029122412205, -0.006822820287197828, -0.014116679318249226, 0.0052430275827646255, 0.03130597993731499, -0.0069532617926597595, 0.017870498821139336, -0.012203535996377468, 0.011015067808330059, -0.04724884405732155, 0.022291019558906555, 0.030987126752734184, -0.017087848857045174, 0.048089466989040375, -0.0600031353533268, 0.023160630837082863, -0.03582795709371567, 0.001010922365821898, -0.013160107657313347, 0.04362546652555466, -0.00014459541125688702, 0.037886034697294235, -0.010877379216253757, -0.032030656933784485, 0.03762515261769295, -0.02385631762444973, 0.04846629872918129, -0.0206967331469059, 0.0007776674465276301, -0.04182827100157738, 0.014181900769472122, 0.0509301982820034, -0.0018107830546796322, -0.062380071729421616, 0.022334499284625053, -0.03777008876204491, -0.05513331666588783, 0.028392788022756577, -0.05849580839276314, -0.010051249526441097, 0.0017528089229017496, -0.018943017348647118, -0.006775716319680214, 0.004235728178173304, 0.018044419586658478, 0.02181273326277733, 0.022624369710683823, -0.019609719514846802, 0.03266837075352669, -0.0189720056951046, -0.02176925353705883, 0.0150007838383317, -0.005945962853729725, 0.04159637540578842, 0.04382837563753128, -0.03287127986550331, -0.01144262682646513, -0.011478859931230545, -0.008159846067428589, 0.027044890448451042, 0.016290705651044846, -0.04145143926143646, 0.0076090930961072445, -0.017870498821139336, 0.010964340530335903, 0.013370263390243053, -0.008326521143317223, 0.02716084010899067, -0.013877536170184612, 0.01836327835917473, 0.0192908626049757, 0.026784008368849754, 0.030726242810487747, 0.035045307129621506, -0.04026297107338905, 0.024088215082883835, 0.011312184855341911, -0.023522967472672462, -0.021204005926847458, -0.0004175942740403116, 0.005384339019656181, 0.007094573695212603, 0.00921787228435278, -0.008507690392434597, -0.03913247957825661, -0.001214737305417657, 0.0023008447606116533, -0.0013687309110537171, -0.008761326782405376, -0.01749366708099842, -0.010681717656552792, -0.010341119952499866, 0.04069777578115463, -0.006844560615718365, -0.024334603920578957, -0.015435589477419853, 0.012776029296219349, 0.017827017232775688, 0.06423524022102356, 0.020464837551116943, 0.018203848972916603, 0.00012466683983802795, 0.004920546896755695, 0.009848340414464474, -0.003938611131161451, -0.03701642528176308, -0.010065742768347263, 0.023378033190965652, -0.018015433102846146, 0.013942757621407509, 0.03971221670508385, 0.009435275569558144, 0.004978520795702934, -0.019551744684576988, -0.002688546199351549, -0.014276107773184776, 0.0004214441287331283, 0.0056669628247618675, -0.009326573461294174, 0.027798553928732872, -0.017595121636986732, 0.029508788138628006, 0.032465461641550064, 0.020160473883152008, -0.003945858217775822, -0.045538611710071564, -0.005489417351782322, -0.0040871696546673775, 0.026986917480826378, 0.031016113236546516, -0.02198665589094162, -0.048553261905908585, -0.017261771485209465, -0.033393047749996185, -0.025276683270931244, -0.018058914691209793, -0.03736427053809166, -0.03597289323806763, -0.037132374942302704, -0.009420781396329403, 0.026972424238920212, -0.053481053560972214, 0.0175661351531744, 0.03269735723733902, -0.047509726136922836, -0.015942860394716263, 0.029914606362581253, -0.03229153901338577, 0.03229153901338577, -0.005782910622656345, -0.016624055802822113, 0.006478599272668362, 0.012993432581424713, 0.11032460629940033, 0.004797352012246847, 0.006351781077682972, 0.0372193343937397, -0.01821834221482277, 0.007804755587130785, -0.0032737217843532562, 0.04084271192550659, 0.011348418891429901, 0.06487295031547546, 0.019841615110635757, -0.006464105565100908, -0.02169678546488285, 0.014160159975290298, -0.008188833482563496, -0.012565873563289642, 0.00852943118661642, 0.026204267516732216, 0.06974276900291443, 0.014116679318249226, 0.0015381238190457225, -0.021885201334953308, 0.0010272274957969785, 0.009710651822388172, -0.011138263158500195, 0.002407734515145421, 0.006500339601188898, -0.02971169725060463, 0.05127803981304169, 0.0040871696546673775, -0.030233463272452354, -0.02453751303255558, 0.0193343423306942, -0.007985924370586872, 0.005145196337252855, 0.03301621600985527, 0.009623690508306026, -0.02820437215268612, -0.00426471559330821, -0.0010734256356954575, 0.0009737827931530774, -0.015566030517220497, -0.008239560760557652, -0.0033806113060563803, -0.018740108236670494, 0.015203692950308323, 0.024204162880778313, -0.0053082481026649475, 0.0005765699315816164, 0.03417569771409035, 0.02213159017264843, 0.025160735473036766, -0.005413325969129801, -0.02439257875084877, -0.0059061055071651936, -0.0551912896335125, -0.03805995732545853, 0.003556345123797655, 0.02400125376880169, 0.04571253061294556, 0.019928576424717903, -0.0028733385261148214, 0.003819040022790432, 0.0037465726491063833, 0.014239874668419361, -0.01717481017112732, -0.006670638453215361, -0.019406810402870178, 0.03829185292124748, 0.046756066381931305, 0.0017509972676634789, 0.0017682083416730165, -0.014363069087266922, 0.027392735704779625, 0.026711540296673775, -0.035335179418325424, 0.016624055802822113, 0.011768730357289314, 0.006257573142647743, -0.014826861210167408, 0.07165591418743134, 0.013913770206272602, 0.002494695596396923, -0.008790314197540283, 0.00810187216848135, 0.012928211130201817, 0.007427924312651157, 0.02327657863497734, 0.003909624181687832, 0.012942705303430557, 0.030668269842863083, 0.009638184681534767, -0.01642114669084549, 0.01800093986093998, -0.02227652631700039, -0.055307235568761826, 0.00461618322879076, -0.010051249526441097, -0.002695793053135276, -0.06498889625072479, 0.001151328207924962, -0.01602982170879841, 0.018566187471151352, 0.0008401707164011896, -0.02271133102476597, 0.04664011672139168, -0.007388066966086626, -0.0013832243857905269, 0.006674261763691902, -0.021435901522636414, -0.014435537159442902, 0.0020743836648762226, -0.016392160207033157, 0.004746624734252691, -0.01982712186872959, -0.027001410722732544, 0.05556812137365341, -0.03719034790992737, 0.005688702687621117, 0.020203953608870506, -0.0255085788667202, 0.05808999016880989, -0.0447559617459774, -0.010065742768347263, 0.04890110343694687, 0.009551223367452621, 0.007174287922680378, -0.04333559796214104, -0.019493771716952324, -0.018624160438776016, 0.02456650137901306, -0.029972581192851067, 0.041045621037483215, -0.010123716667294502, 0.038958556950092316, 0.03420468419790268, 0.0005978572880849242, -0.004786481615155935, -0.013754341751337051, 0.02726229466497898, -0.014971796423196793, -0.010261405259370804, 0.06081477180123329, -0.026465151458978653, 0.01795746013522148, -0.03675554320216179, 0.014268861152231693, -0.00334981270134449, -0.006540196947753429, -0.007282989099621773, 0.0330452024936676, -0.018812576308846474, -0.026914449408650398, -0.008152599446475506, -0.031276993453502655, -0.014421042986214161, 0.01821834221482277, -0.036378711462020874, 0.003996585495769978, -0.021175019443035126, -0.03724832087755203, 0.03823387995362282, 0.011319431476294994, -0.024131694808602333, -0.010080236941576004, -0.00960919726639986, -0.00016520336794201285, 0.047219857573509216, -0.02471143566071987, 0.018116887658834457, 0.02478390373289585, -0.015058757737278938, -0.002838916378095746, 0.0037085271906107664, -0.005366222467273474, 0.0005684173665940762, 0.045683544129133224, -0.03542213886976242, 0.022551901638507843, 0.011775976978242397, 0.01226875651627779, 0.00425746850669384, -0.003985715098679066, -0.021783746778964996, 0.012102081440389156, 0.0537419393658638, 0.024044733494520187, 0.0023551953490823507, 0.00957296323031187, 0.0300015676766634, 0.011746990494430065, 0.025247694924473763, -0.010355613194406033, -0.021508369594812393, -0.025624526664614677, -0.029682710766792297, -0.010036756284534931, -0.07020656019449234, 0.01868213526904583, -0.05542318522930145, -0.03150888904929161, -0.043741416186094284, 0.002976604737341404, -0.016334185376763344, 0.016754496842622757, -0.0007038410985842347, 0.005663339048624039, -0.016232730820775032, 0.02249392867088318, -0.011790471151471138, -0.035045307129621506, 0.024450551718473434, -0.004960403777658939, 0.015073250979185104, 0.023363539949059486, -0.01573995128273964, -0.00269035785458982, 0.03739325702190399, 0.02988561987876892, -0.025696994736790657, -0.013123873621225357, -0.004358923062682152, 0.03130597993731499, 0.0011350230779498816, 0.008043898269534111, 0.04371242597699165, 0.02220405824482441, 0.01882706955075264, -0.015058757737278938, 0.03492936119437218, -0.008956989273428917, -0.014797874726355076, 0.027247799560427666, 0.04527772590517998, 0.026175281032919884, 0.024653460830450058, -0.015044264495372772, 0.0268709696829319, -0.03061029501259327, 0.043741416186094284, -0.013174600899219513, -0.00984109379351139, -0.013906523585319519, -0.030117515474557877, -0.010913613252341747, 0.045828480273485184, -0.03545112535357475, 0.007478651590645313, -0.03165382519364357, -0.02966821752488613, -0.005050988402217627, 0.02245044708251953, -0.005764794070273638, 9.896350093185902e-05, 0.018551692366600037, -0.04924894869327545, -0.05084323510527611, -0.019624212756752968, -0.030378399416804314, 0.0030690007843077183, 0.0012319483794271946, -0.04939388483762741, 0.046900998800992966, -0.004906053189188242, -0.02460998110473156, 0.02094312198460102, -0.029146449640393257, -0.032784320414066315, -0.005616235546767712, -0.009174391627311707, -0.015305147506296635, -0.0008274888969026506, -0.025494085624814034, -0.010210677981376648, -0.008717846125364304, -0.010486055165529251, 0.03568302094936371, -0.013971744105219841, -0.017812523990869522, 0.021957669407129288, 0.027030397206544876, 0.03629174828529358, 0.020001044496893883, -0.028320319950580597, 0.019537251442670822, 0.017479173839092255, 0.011587562039494514, -0.014015224762260914, -0.003873390844091773, -0.0046198065392673016, -0.01802992634475231, 0.0007151641766540706, 0.0075438725762069225, 0.0038915076293051243, 0.03403076156973839, 0.005790157709270716, -0.0026378189213573933, 0.01025415863841772, 0.037161361426115036, 0.043741416186094284, -0.03121902234852314, -0.0007282989099621773, -0.0002842086832970381, 0.035335179418325424, -0.02511725388467312, 0.012116574682295322, -0.03437860682606697, 0.015073250979185104, -0.0010580262169241905, 0.036987438797950745, 0.03348000720143318, 0.0030979879666119814, 0.0153196407482028, -0.008899015374481678, 0.000488703022710979, 0.006750352680683136, 0.01054402906447649, -0.007978677749633789, -0.00019271840574219823, 0.014196394011378288, 0.03634972497820854, 0.003873390844091773, -0.006913404446095228, -0.0011187178315594792, -0.017928471788764, 0.015624004416167736, -0.017798030748963356, -0.012138315476477146, 0.031595852226018906, 0.0028244229033589363, -0.004482117947191, 0.011123768985271454, 0.040871698409318924, -0.03617580235004425, -0.010949847288429737, -0.003112481441348791, -0.004862572532147169, -0.01688493974506855, 0.007529378868639469, 0.015015277080237865, -0.009203379042446613, -0.005250274203717709, -0.02256639674305916, -0.034900370985269547, 0.044524066150188446, 0.01958073303103447, 0.003637871239334345, -0.018696628510951996, 0.010304885916411877, 0.0223779808729887, 0.021943174302577972, 0.026378190144896507, -0.0337698794901371, 0.010609249584376812, 0.02011699229478836, 0.0241461880505085, 0.0076018464751541615, -0.01410218607634306, 0.013493458740413189, -0.016768991947174072, 0.002346137072890997, 0.004612559452652931, 0.023160630837082863, -0.007587352767586708, 0.025783956050872803, -0.010848392732441425, -0.007739534601569176, 0.0025725981686264277, -0.0008555700769647956, -0.014645692892372608, 0.014131173491477966, -0.03959627076983452, -0.03805995732545853, 0.014160159975290298, -0.006478599272668362, 0.015957355499267578, 0.03887159377336502, -0.01458771899342537, 0.0016549777938053012, -0.004170507658272982, -0.01656608283519745, -0.012551380321383476, 0.00024344569828826934, 0.0012899223947897553, -0.0344945527613163, 0.0005711349076591432, 0.02123299241065979, -0.0002527305914554745, 0.012681822292506695, 0.012710808776319027, 0.02366790361702442, -0.02018946036696434, 0.01214556209743023, -0.006782962940633297, 0.008688859641551971, 0.006402508355677128, 0.13600710034370422, 0.0028660916723310947, 0.0038045465480536222, -0.017232783138751984, 0.014152913354337215, -0.003967598546296358, 0.012442679144442081, 0.012333977967500687, 0.004300949163734913, 0.004583572503179312, 0.004826338961720467, 0.0001841128832893446, -0.027928994968533516, 0.0033208257518708706, 0.011812211014330387, 0.012102081440389156, 0.03782806172966957, -0.03495834767818451, -0.008435223251581192, 0.025320162996649742, 0.010754184797406197, -0.012493406422436237, -0.012218029238283634, 0.0011051301844418049, 0.02026192843914032, -0.010087483562529087, 0.017087848857045174, -0.024334603920578957, 0.00894249603152275, 0.021334446966648102, 0.026595592498779297, 0.0004311819502618164, -0.019493771716952324, -0.0023316433653235435, 0.02252291515469551, 0.00010343611211283132, 0.013254315592348576, -0.005054611712694168, -0.02130546048283577, -0.004837208893150091, 0.006956885103136301, -0.014667432755231857, 0.012377457693219185, -0.03333507478237152, -0.002159533090889454, -0.024580994620919228, -0.0012872049119323492, 0.015971848741173744, -0.005130702629685402, 0.0012681821826845407, -0.012870237231254578, 0.0016069679986685514, -0.006543820258229971, -0.006710495334118605, -0.018203848972916603, 0.0018017245456576347, 0.003101611277088523, 0.02339252643287182, -0.018116887658834457, 0.0001376883446937427, 0.0028860203456133604, -0.013768834993243217, 0.0008188833598978817, 0.00833376869559288, -0.01702987402677536, 0.0038335337303578854, -0.013160107657313347, 0.020102499052882195, 0.027494190260767937, -0.01516021229326725, -0.010667223483324051, 0.0010072989389300346, 0.01710234209895134, -0.004674157127737999, 0.016319692134857178, -0.042031180113554, 0.011087535880506039, 0.03571200743317604, 0.012783276848495007, -0.03194369748234749, -0.014594965614378452, 0.004311819095164537, 0.005608988460153341, 0.017377719283103943, -0.004782858304679394, -0.05226359888911247, 0.0005272014532238245, 0.007076456677168608, -0.01817486248910427, -0.0024802018888294697, 0.0032411112915724516, -0.011841198429465294, 0.0023570070043206215, 0.014174653217196465, 0.008000417612493038, 0.008130859583616257, -0.0037900530733168125, -0.015421095304191113, -0.003630624385550618, 0.035016320645809174, 0.021015590056777, 0.009326573461294174, 0.03049434721469879, 0.028334813192486763, 0.001825276529416442, 0.030262451618909836, 0.002145039616152644, -0.007529378868639469, -0.030871178954839706, 0.014776133932173252, -0.023073669523000717, -0.02113153785467148, -0.01005849614739418, 0.004326312802731991, -0.010522288270294666, -0.013522445224225521, 0.03495834767818451, -0.020218446850776672, 0.0351322703063488, -0.030668269842863083, 0.00404006615281105, 0.0158848874270916, -0.046292271465063095, -0.017899485304951668, 0.006333664059638977, 0.005895235575735569, 0.005985819734632969, 0.011551328003406525, 0.009493249468505383, 0.002913195639848709, 0.01573995128273964, -0.01739221252501011, 0.0015797927044332027, -0.015348628163337708, 0.017812523990869522, -0.010370106436312199, -0.005815521348267794, -0.0021396044176071882, 0.017160316929221153, -0.034581515938043594, -0.002514624036848545, -0.020537303760647774, -0.005648845806717873, 0.021218499168753624, -0.02327657863497734, 0.007196028251200914, -0.0018877797992900014, 0.02478390373289585, -0.01720379665493965, 0.023914292454719543, 0.0193343423306942, -0.00264506577514112, 0.001866039470769465, -0.02342151291668415, -0.004880689550191164, -0.0076598203741014, 0.008058391511440277, 0.03652364760637283, -0.015058757737278938, 0.0036704817321151495, -0.0025979618076235056, -0.02366790361702442, -0.028392788022756577, -0.007913456298410892, -0.021247485652565956, -0.014623952098190784, 0.022117096930742264, -0.010362859815359116, -0.016826964914798737, 0.0028552215080708265, 0.009688911959528923, 0.024015747010707855, -0.010609249584376812, -0.006427871994674206, 0.011478859931230545, -0.016971901059150696, 0.012391951866447926, -0.029044995084404945, 0.02174026519060135, 0.007754028309136629, -0.02949429489672184, -0.007754028309136629, -0.0007119937217794359, 0.007290236186236143, 0.0026233254466205835, 0.021001096814870834, 0.016899432986974716, 0.02363891527056694, -0.00519230030477047, -0.0165226012468338, -0.009478756226599216, -0.014652939513325691, 0.0153196407482028, 0.012406445108354092, 0.005471300333738327, 0.0043915337882936, 0.012174548581242561, 0.003630624385550618, -0.008616391569375992, 0.006782962940633297, -0.021493876352906227, 0.005551014561206102, -0.02162431739270687, -0.008196080103516579, -0.0286391768604517, 9.007490734802559e-05, -0.022435953840613365, 0.02468244917690754, 0.010080236941576004, 0.03600187972187996, -0.02594338357448578, -0.002815364394336939, -0.003811793401837349, -0.01860966719686985, -0.022015642374753952, -0.010072989389300346, -0.014754394069314003, 0.009630938060581684, 0.031161049380898476, 0.010674470104277134, -0.023682396858930588, 0.02837829478085041, -0.004739378113299608, 0.004728507716208696, 0.0039712218567729, -0.03003055416047573, -0.038349829614162445, -0.0062974304892122746, -0.01569647155702114, 0.020203953608870506, 0.010630990378558636, -0.005743053741753101, -0.021798240020871162, -0.02805943600833416, 0.02561003342270851, 0.026914449408650398, -0.028624683618545532, 0.0026668058708310127, 0.010616496205329895, 0.00519230030477047, -0.006036547012627125, 0.03452354297041893, 0.012189042754471302, -0.024160683155059814, -0.005145196337252855, -0.00937730073928833, 0.014573224820196629, -0.00426471559330821, 0.03478442505002022, -0.006398885045200586, -0.020827174186706543, 0.027726085856556892, -0.01710234209895134, -0.003822663566097617, -0.0023008447606116533, 0.00515606626868248, -0.01576893962919712, -0.0038951311726123095, 0.0013877536403015256, -0.03310317546129227, -0.03971221670508385, 0.01539210882037878, -0.011232471093535423, 0.042379025369882584, 2.6637488190317526e-05, -0.004018325824290514, 0.021638810634613037, 0.003344377502799034, 0.02072571963071823, -0.012573120184242725, -0.012486159801483154, 0.0029711697716265917, 0.04919097572565079, -0.024580994620919228, 0.015826912596821785, -0.019102446734905243, 0.0223779808729887, 0.020174967125058174, 0.013797822408378124, -0.009717898443341255, -0.0012844873126596212, -0.0009620068012736738, 0.028624683618545532, 0.009783119894564152, -0.016261719167232513, -0.0039893388748168945, 0.013558679260313511, -0.03014650195837021, 0.006420625373721123, 0.014305095188319683, 0.0027320266235619783, 0.007877222262322903, -0.005772040691226721, -0.025914397090673447, 0.039219439029693604, -0.033508993685245514, -0.027668112888932228, -0.012616600841283798, 0.013638393953442574, -0.014899329282343388, 0.005137949250638485, 0.0182473286986351, -0.010457067750394344, 0.003735702484846115, -0.015218186192214489, 0.011529588140547276, 0.012457172386348248, -0.027218813076615334, 0.007978677749633789, 0.008000417612493038, -0.010529535822570324, 0.010196184739470482, -0.009601950645446777, -0.04530671238899231, -0.00968166533857584, 0.0010045814560726285, -0.0010281333234161139, -0.0008306593517772853, -0.01843574456870556, 0.02813190408051014, -0.0032465464901179075, -0.0008981447317637503, 0.026856474578380585, -0.023334551602602005, 0.005811897572129965, 0.005391586106270552, -0.003431338584050536, -0.019885096698999405, 0.0003983450878877193, 0.03542213886976242, 0.009725145064294338, -0.01994306966662407, -0.006058287341147661, 0.0017600557766854763, -0.01297169178724289, 0.0019693055655807257, 0.008485950529575348, -0.016145769506692886, 0.005130702629685402, 0.02130546048283577, -0.010044002905488014, 0.01795746013522148, -0.028363801538944244, 0.01749366708099842, 0.029334865510463715, -0.04116157069802284, 0.032784320414066315, -0.035016320645809174, -0.012768782675266266, -0.03197268396615982, -0.010746938176453114, -0.0014946432784199715, 0.019914083182811737, 0.0331321656703949, -0.037277307361364365, -0.0034911243710666895, -0.010210677981376648, -0.014645692892372608, -0.04762567579746246, -0.005960456095635891, -0.027972476556897163, -0.016624055802822113, 0.0007758557330816984, 0.01860966719686985, 0.0255085788667202, -0.01645013317465782, -0.008232314139604568, -0.01807340793311596, -0.012022366747260094, 0.010768678039312363, 0.005261144135147333, -0.012116574682295322, 0.010645483620464802, -0.009833847172558308, -0.014355822466313839, 0.005746677052229643, -0.00925410632044077, 0.005728560034185648, -0.006268443539738655, 0.019914083182811737, -0.029334865510463715, 0.025320162996649742, -0.005884365178644657, -0.010913613252341747, -0.02730577439069748, 0.014645692892372608, 0.01388478372246027, 0.0016024387441575527, -0.006406131666153669, 0.010870132595300674, -0.016624055802822113, 0.005677832756191492, -0.04188624396920204, 0.004206741228699684, -0.027102865278720856, -0.002058078534901142, 0.0008723281789571047, 0.0031287865713238716, 0.0059242225252091885, 0.030378399416804314, 0.0165226012468338, -0.007442418020218611, 0.01111652236431837, 0.02913195639848709, 0.01843574456870556, 0.000689347623847425, -0.004728507716208696, -0.0038299101870507, -0.00788446981459856, 0.013094887137413025, -0.013457224704325199, 0.0036795400083065033, 0.008993223309516907, -0.004583572503179312, -0.007293859496712685, 0.0008279418107122183, -0.0008433411712758243, -3.262455265939934e-06, 0.005094469059258699, -0.0076598203741014, 0.02504478581249714, -0.006500339601188898, 0.024015747010707855, 0.004449507687240839, 1.866888669610489e-05, -0.028407281264662743, -0.051567912101745605, 0.004550962243229151, -0.00474300142377615, -0.01605881005525589, 0.009326573461294174, -0.0007994077168405056, -0.0065474435687065125, -0.012768782675266266, -0.007898963056504726, -0.030262451618909836, 0.0007400749018415809, -0.019856108352541924, 0.0036052607465535402, 0.028030449524521828, 0.018232835456728935, -0.031276993453502655, -0.013261562213301659, -0.002085253829136491, 0.027610138058662415, 0.005583624821156263, -0.024986812844872475, -0.014718160033226013, 0.005007507745176554, -0.0153196407482028, -0.009029457345604897, -0.005728560034185648, 0.013457224704325199, -0.027885515242815018, 0.07426474988460541, 0.018131380900740623, -0.009058443829417229, 0.005449560005217791, -0.03049434721469879, -0.027421722188591957, 0.013551432639360428, 0.019493771716952324, 0.02249392867088318, 0.0031704555731266737, 0.035045307129621506, 0.011573067866265774, 0.006536573171615601, 0.018740108236670494, -0.007478651590645313, -0.0024439680855721235, -0.019232887774705887, 0.013464471325278282, 0.003306332044303417, -0.003038202179595828, -0.0017509972676634789, 0.020522810518741608, -0.0065148333087563515, 0.027218813076615334, 0.014986290596425533, -0.01943579688668251, -0.011138263158500195, -0.004569079261273146, -0.03553808853030205, -0.028392788022756577, 0.014602212235331535, 0.010029509663581848, -0.014631199650466442, -0.0002984757302328944, -0.016479121521115303, 0.01458771899342537, -0.014761640690267086, 0.016942912712693214, -0.017928471788764, 0.01013096421957016, -0.011145509779453278, 0.0050691054202616215, 0.005663339048624039, -0.0193343423306942, -0.004594442900270224, 0.002065325155854225, -0.007993170991539955, -0.027566658332943916, 0.005598118528723717, 0.004873442929238081, 0.003232052782550454, -0.012471665628254414, -0.011783224530518055, 0.0033679294865578413, 0.01214556209743023, -0.003953104838728905, -0.005833637900650501, 0.02959574945271015, -0.008029405027627945, -0.0003469384100753814, 0.003661423223093152, 0.009732392616569996, -0.02065325155854225, -0.004790105391293764, -0.0110295619815588, 0.029827645048499107, 0.041654348373413086, -0.020247433334589005, -0.01717481017112732, -0.011529588140547276, 0.006772093009203672, 0.021609824150800705, -0.009623690508306026, -0.0011169061763212085, -0.020464837551116943, 0.0002801323716994375, 0.01210932806134224, 0.00897873006761074, 0.013703614473342896, -0.010986081324517727, -0.026160787791013718, -0.0032773450948297977, 0.00429370254278183, 0.04034993425011635, -0.005996690131723881, 0.004090793430805206, -0.01950826495885849, -0.02655211091041565, 0.006808326579630375, 0.007228638511151075, -0.009652677923440933, 0.0006594547303393483, 0.01314561441540718, -0.011862938292324543, -0.015464575961232185, -0.011261457577347755, 0.01875460147857666, -0.0030834944918751717, -0.011942652985453606, -0.02050831727683544, 0.026247747242450714, 0.0040147025138139725, 0.0051343259401619434, -0.0019258252577856183, 0.002677676035091281, -0.03061029501259327, 0.02266785129904747, 0.010036756284534931, 0.013478964567184448, -0.009855587035417557, -0.024595487862825394, -0.0033480010461062193, 0.032030656933784485, 0.010587509721517563, 0.007228638511151075, -0.023798344656825066, 0.006525703240185976, 0.015725458040833473, -0.006471352651715279, 0.010638236999511719, -0.0006259384681470692, 0.03333507478237152, 0.006993119139224291, 0.0042792088352143764, 0.007362703327089548, 0.01705886237323284, -0.0059061055071651936, -0.024595487862825394, 0.021508369594812393, -0.015015277080237865, -0.01742119900882244, 0.012696315534412861, 0.0008809337159618735, -0.02155184932053089, -0.0009484190959483385, -0.001644107629545033, -0.008993223309516907, -0.002302656415849924, 0.0009882762096822262, -0.01630519889295101, -0.004308195784687996, 0.022580889984965324, 0.010573015548288822, 0.010464314371347427, 0.011391899548470974, -0.0017663966864347458, -0.017073355615139008, -0.004152390640228987, 0.00393498782068491, 0.0006109920213930309, -0.019160421565175056, 0.009210625663399696, 0.01843574456870556, -0.011196237057447433, -0.0019620589446276426, -0.014667432755231857, -0.007703301031142473, 0.03197268396615982, -0.0008075602818280458, -0.0007663443684577942, -0.012290497310459614, 0.01605881005525589, 0.01056576892733574, -0.009109171107411385, 0.0050437417812645435, -0.012210782617330551, -0.011007821187376976, -0.016435639932751656, -0.018421251326799393, -0.006790210027247667, -0.004739378113299608, 0.015174705535173416, 0.0023606305476278067, -0.008797560818493366, -0.005971326492726803, 0.003186760703101754, -0.007927950471639633, 0.015710964798927307, 0.01523268036544323, 0.010493301786482334, -0.03269735723733902, -0.014573224820196629, 0.00852943118661642, -0.006648898124694824, -0.025595540180802345, 0.003482065862044692, 0.027349254116415977, 0.02934935875236988, -0.012420938350260258, 0.00666339136660099, -0.009580210782587528, 0.030871178954839706, 0.0009502308093942702, 0.004942287225276232, 0.019464785233139992, 0.020421355962753296, -0.02145039476454258, -0.016682030633091927, 0.005261144135147333, -0.004050936084240675, 0.020001044496893883, -0.012805016711354256, 0.020247433334589005, -0.0365816205739975, -0.027349254116415977, -0.013522445224225521, 0.010167197324335575, 0.037886034697294235, 0.026755020022392273, -0.011580315418541431, 0.012696315534412861, 0.006406131666153669, 0.010942600667476654, 0.02842177450656891, 0.028711644932627678, -0.009543976746499538, 0.021044576540589333, -0.024914344772696495, 0.0036469297483563423, 0.006909781135618687, 0.009493249468505383, -0.025407124310731888, 0.0025852799881249666, -0.013681874610483646, -0.010029509663581848, 0.010044002905488014, 0.02650863118469715, 0.00011911854380741715, 0.008862781338393688, 0.015131225809454918, 0.015754444524645805, -0.0004194059583824128, 0.009790366515517235, -0.008833794854581356, 0.007420677691698074, 0.0013687309110537171, 0.025696994736790657, 0.024117201566696167, 0.017087848857045174, 0.02213159017264843, -0.013428237289190292, 0.00892800185829401, -0.0026921695098280907, 0.007232261821627617, -0.01853719912469387, -0.00022340388386510313, 0.003724832320585847, -0.018595173954963684, -0.02834930643439293, 0.007522132247686386, 0.003974845167249441, -0.015116731636226177, 0.015102238394320011, 0.004065429791808128, -0.007985924370586872, -0.019711174070835114, -0.01987060345709324, 0.0029059487860649824, -0.013073146343231201, -0.02026192843914032, -0.010855639353394508, 0.042031180113554, 0.007442418020218611, 0.019885096698999405, -0.01226875651627779, 0.02791450172662735, -0.005616235546767712, -0.005757546983659267, 0.010558522306382656, 0.011457120068371296, -0.029001515358686447, -0.014855848625302315, -0.0013533314922824502, 0.02295771986246109, 0.0038661439903080463, 0.013790575787425041, 0.013334030285477638, -0.004340806510299444, 0.0031414683908224106, -0.0008107307367026806, -0.011254210956394672, 0.06539471447467804, 0.03171180188655853, -0.02065325155854225, -0.005116209387779236, 0.007362703327089548, 0.011971639469265938, 0.0008841041708365083, -0.006543820258229971, -0.011804964393377304, 0.014732654206454754, -0.0076018464751541615, -0.02558104693889618, -0.017116835340857506, -0.011478859931230545, 0.010283146053552628, -0.037596166133880615, -0.02108805812895298, -0.03574099764227867, 0.014312341809272766, 0.009493249468505383, 0.023436006158590317, -0.006127131637185812, -0.008609144948422909, -0.007812002208083868, -0.002279104432091117, -0.0176096148788929, -0.006659768056124449, -0.017406705766916275, 0.017928471788764, 0.019769148901104927, 0.010225171223282814, -0.013732601888477802, 0.022189565002918243, -0.02252291515469551, -0.008993223309516907, 0.022247537970542908, 0.0014384809182956815, -0.0224214605987072, 0.006993119139224291, -0.014435537159442902, 0.02198665589094162, -0.028030449524521828, -0.008174339309334755, 0.009341067634522915, -0.028552215546369553, -0.022943226620554924, -0.035306189209222794, -0.013384757563471794, -0.01318184845149517, -0.013558679260313511, -0.02543611079454422, -0.004427767358720303, -0.0011440814705565572, 0.014109432697296143, 0.006540196947753429, 0.04020499810576439, -0.018044419586658478, -0.004768365062773228, 0.018957512453198433, -0.034001775085926056, -0.001406776369549334, -0.019276369363069534, 0.007330093067139387, 0.014022471383213997, -0.0031613970641046762, 0.018131380900740623, 0.007130807265639305, 0.006677885074168444, 0.015435589477419853, -0.0044531309977173805, -0.009065690450370312, -0.0038516505155712366, 0.006369898095726967, -0.02866816520690918, -0.009543976746499538, -0.00230809161439538, -0.010790418833494186, 0.012906471267342567, 0.013739848509430885, 0.0028479748871177435, 0.00415963726118207, -0.016044314950704575, -0.004340806510299444, -0.020972110331058502, -0.011073041707277298, -0.0003797752724494785, -0.005217663943767548, -0.0189720056951046, -0.010377353057265282, 0.03017549030482769, -0.006395261734724045, 0.005373469088226557, 0.028291333466768265, -0.008522183634340763, 0.02208811044692993, 0.02529117651283741, 0.03153787925839424, -0.010819405317306519, 0.003556345123797655, -0.027247799560427666, -0.012841250747442245, -0.0027736956253647804, -0.016696523874998093, -0.02123299241065979, -0.024624474346637726, -0.01987060345709324, -0.008623638190329075, 0.032465461641550064, 0.010906366631388664, 0.03901652991771698, 0.00925410632044077, -0.012326730415225029, -0.031190035864710808, -0.0135949132964015, 0.002677676035091281, 0.014718160033226013, -0.02456650137901306, -0.0009312080801464617, 0.019479278475046158, 0.012232523411512375, 0.0033896698150783777, 0.020595278590917587, 0.004268338903784752, -0.019319849088788033, 0.014732654206454754, -0.008348261937499046, -0.0028117410838603973, 0.018058914691209793, 0.004913299810141325, 0.008536677807569504, -0.01144262682646513, -0.04414723441004753, 0.010681717656552792, 0.001107847667299211, -0.0018379583489149809, 0.03574099764227867, 0.0324074886739254, -0.009746885858476162, -0.0027428967878222466, 0.016508108004927635, 0.008109118789434433, 0.021972162649035454, 0.0054423133842647076, -0.01724727638065815, 0.0034838777501136065, 0.006612664088606834, 0.01865314692258835, -0.025320162996649742, -0.0019620589446276426, -0.00839174259454012, 0.02256639674305916, -0.01688493974506855, 0.01539210882037878, 0.011123768985271454, 0.014276107773184776, 0.017232783138751984, -0.003612507600337267, -0.005551014561206102, -0.010188938118517399, -0.0067539759911596775, -0.019609719514846802, -0.03272634744644165, 0.008877274580299854, -0.017928471788764, -0.003569026943296194, -0.0047103906981647015, -0.0031958192121237516, 0.01487034186720848, -0.0001952094753505662, 0.0008827453712001443, 0.0035762737970799208, -0.007196028251200914, -0.009732392616569996, 0.014486264437437057, -0.001192091265693307, 0.023117149248719215, 0.013681874610483646, -0.020595278590917587, 0.00788446981459856, -0.023233097046613693, 0.00894249603152275, 0.0069206515327095985, 0.022189565002918243, -0.007667067460715771, 0.013935511000454426, 0.007094573695212603, 0.000302552041830495, 0.004873442929238081, -0.006181482225656509, 0.013667380437254906, -0.014283355325460434, -0.030668269842863083, 0.006482222583144903, -0.011580315418541431, 0.0032954621128737926, -0.0033914814703166485, 0.0023262083996087313, 0.02213159017264843, -0.011986133642494678, 0.00897873006761074, 0.015218186192214489, -0.03208862990140915, -0.0009475132683292031, 0.018377771601080894, 0.08058391511440277, 0.006623534485697746, 0.034581515938043594, -0.006638027727603912, -0.0033733646851032972, 0.00016644891002215445, -0.0007151641766540706, -0.04049486666917801, -0.0056053651496768, 0.0020617018453776836, -0.02159533090889454, 0.021363435313105583, -0.013377510011196136, -0.012602107599377632, -0.00384440366178751, 0.005949586164206266, -0.019348835572600365, 0.017131328582763672, 0.02492883801460266, 0.005746677052229643, -0.021392421796917915, 0.00957296323031187, -0.007225015200674534, -0.015754444524645805, -0.02453751303255558, -0.009297586977481842, -0.008159846067428589, -0.012210782617330551, 0.01013096421957016, 0.001693023252300918, 0.017682082951068878, -0.004141520708799362, -0.015522549860179424, 0.0008732340065762401, 0.018769096583127975, 0.00393498782068491, -0.006717742420732975, 0.007279365789145231, -0.008739586919546127, 8.928228635340929e-05, 0.00880480743944645, 0.012326730415225029, 0.00939179491251707, -0.016899432986974716, -0.008681613020598888, 0.011493354104459286, -0.0003005138714797795, -0.0077685220167040825, -0.007913456298410892, 0.0015272536547854543, 0.022754810750484467, 0.019348835572600365, -0.004496611654758453, 0.020450342446565628, -0.00839174259454012, -0.01734873093664646, 0.011160003021359444, 0.00024186045629903674, 0.02256639674305916, -0.005670586135238409, -0.002152286237105727, 0.004406027030199766, -0.009138158522546291, 0.0019258252577856183, -0.0011060360120609403, 0.006442365702241659, -0.01381231565028429, -0.0021631564013659954, 0.016435639932751656, -0.014283355325460434, 0.013377510011196136, 0.0016613187035545707, 0.01605881005525589, -0.010036756284534931, 0.018841562792658806, 0.004406027030199766, -0.004036442376673222, -0.006906157825142145, 0.010594756342470646, 0.001871474552899599, -0.0023733123671263456, -0.015710964798927307, 0.002146851271390915, 0.010341119952499866, -0.02558104693889618, -0.021943174302577972, 0.017682082951068878, 0.04501684382557869, -0.0018895914545282722, -0.00013406497600954026, 0.006398885045200586, -0.014355822466313839, 0.014051458798348904, 0.004960403777658939, -0.0032103126868605614, -0.009435275569558144, -0.009007716551423073, -0.0071779112331569195, -0.00937730073928833, 0.006764846388250589, 0.010413587093353271, 0.025334656238555908, -0.007359080016613007, -0.015797926113009453, 0.008638132363557816, -0.004782858304679394, -0.0028660916723310947, 0.002701228018850088, 0.005511157214641571, 0.002190331695601344, -0.009043950587511063, 0.00515606626868248, -0.0048444559797644615, -0.011957146227359772, -0.030291438102722168, 0.0032085010316222906, -0.011529588140547276, 0.007558365818113089, -0.01144262682646513, -0.009543976746499538, -0.012218029238283634, -0.0019421305041760206, 0.012152808718383312, -0.013406497426331043, -0.02971169725060463, 0.0012654645834118128, -0.0067213657312095165, 0.0059314691461622715, -0.017508160322904587, -0.015522549860179424, -0.018087901175022125, -0.0025544811505824327, -0.03643668442964554, -0.001644107629545033, 0.010268651880323887, 0.008855534717440605, -0.011725249700248241, 0.0007147112628445029, -0.0004954969044774771, -0.0080801323056221, 0.01979813538491726, 0.015725458040833473, -0.019276369363069534, 0.003992962185293436, 0.011094782501459122, -0.021059071645140648, -0.00750039191916585, 0.01163828931748867, 0.008725092746317387, -0.02830582670867443, -0.027030397206544876, 0.01566748507320881, -0.015580524690449238, -0.006051040720194578, 0.010326625779271126, -0.012276003137230873, -0.008993223309516907, 0.007090950384736061, -0.011457120068371296, -0.00023280202003661543, -0.0018732863245531917, -0.01846473291516304, 0.013392004184424877, -0.02701590396463871, -0.014819614589214325, 0.0007563800900243223, 0.010710704140365124, -3.4790085919667035e-05, 0.0076018464751541615, -0.0034095984883606434, -0.0061307549476623535, -0.022406967356801033, 0.02147938311100006, 0.011203483678400517, -0.017087848857045174, 0.021290967240929604, 0.01185569167137146, -0.019609719514846802, 0.004311819095164537, 0.0162037443369627, -0.0047103906981647015, 0.011145509779453278, 0.016015328466892242, 0.010500548407435417, -0.008558417670428753, -0.009833847172558308, -0.02094312198460102, -0.0003809075860772282, -0.00833376869559288, -0.0176096148788929, -0.008442469872534275, 0.00014017941430211067, -0.010913613252341747, -0.012594860978424549, -0.0022012018598616123, 0.005246650893241167, -0.000942078186199069, 0.013471717946231365, -0.02876961976289749, -0.010855639353394508, -0.0011069418396800756, 0.015870394185185432, 0.00944976881146431, -0.004898806568235159, 0.021218499168753624, -0.00822506658732891, -0.0034150334540754557, -0.007536625489592552, 0.009435275569558144, -0.00448936503380537, -0.055915962904691696, 0.010333873331546783, 0.007804755587130785, -0.015073250979185104, -0.00939179491251707, 0.009065690450370312, -0.006656144745647907, 0.0046524167992174625, -0.011348418891429901, 0.0015181952621787786, -0.012478912249207497, 0.004206741228699684, -0.00876857340335846, -0.03455252945423126, 0.008761326782405376, 0.0040871696546673775, -0.0006771187181584537, 0.005565508268773556, -0.00912366434931755, -0.007199651561677456, -0.01605881005525589, -0.01746468059718609, 0.014377562329173088, 0.030987126752734184, 0.010804912075400352, -0.011790471151471138, 0.021464889869093895, 0.01810239441692829, 0.000520860543474555, -0.017189303413033485, -0.02587091736495495, -0.012920964509248734, 0.0013714483939111233, -0.010768678039312363, -0.0036722933873534203, -0.01332678273320198, -0.007681560702621937, 0.013370263390243053, 0.009804859757423401, -2.5943951186491176e-05, 0.0015725459670647979, -0.018740108236670494, -0.006384391337633133, -0.002800870919600129, -0.012544133700430393, 0.018232835456728935, 0.0024548382498323917, 0.0015834160149097443, 0.023233097046613693, 0.017798030748963356, -0.0094860028475523, -0.002576221479102969, -0.0003908718645107001, -0.0033769879955798388, -0.010928106494247913, 0.016580576077103615, -0.001258217846043408, -0.022001149132847786, -0.008609144948422909, 0.033248111605644226, -0.02468244917690754, -0.0012319483794271946, -0.0015462763840332627, 0.00028284991276450455, 0.012920964509248734, 0.0018316174391657114, -0.0030218970496207476, 0.01160205528140068, 0.007217768579721451, -0.009239613078534603, -0.006717742420732975, -0.00030459018307738006, 0.01591387391090393, -0.01645013317465782, 0.004500234965234995, -0.007746781688183546, 0.029552267864346504, 0.0067793396301567554, 0.006880794186145067, 0.004605312831699848, -0.01800093986093998, 0.007261248771101236, -0.00790620967745781, -0.003793676383793354, -0.004304572474211454, 0.002257364336401224, -0.020827174186706543, -0.009493249468505383, -0.003945858217775822, 0.028247851878404617, -0.008449716493487358, 0.00046379235573112965, 0.0030599425081163645, 0.011123768985271454, -0.012957198545336723, -0.01433408260345459, 0.010326625779271126, -0.0016785296611487865, -0.002726591657847166, -0.01576893962919712, -0.0018642278155311942, -0.014196394011378288, 0.010877379216253757, 0.002670429414138198, -0.019856108352541924, -0.004985767416656017, -0.011529588140547276, 0.0017926661530509591, -0.0030490723438560963, 0.01795746013522148, 0.014355822466313839, 0.014167406596243382, -0.022609876468777657, -0.01189192570745945, -0.013957250863313675, 0.01584140583872795, 0.0001087013297365047, -0.01025415863841772, -0.01560951117426157, -0.020856160670518875, -5.386943666962907e-05, -0.0006282030954025686, -0.03226255252957344, 0.00538071570917964, -0.012805016711354256, 0.01994306966662407, -0.024508526548743248, -0.01727626472711563, 0.0053336117416620255, 0.009072937071323395, -0.003150526899844408, -0.015681978315114975, 0.01492831576615572, -0.02026192843914032, -0.021856212988495827, 0.009341067634522915, -0.016406653448939323, -0.013703614473342896, -0.00647497596219182, 0.0005761170177720487, 0.01914592646062374, -0.009348314255475998, -0.012862990610301495, -0.004630676470696926, -0.006228586193174124, -0.002154097892343998, 0.020812680944800377, 0.002058078534901142, -0.005974949803203344, -0.0013343087630346417, -0.0017355979653075337, 0.0037030919920653105, 0.007417054381221533, 0.018696628510951996, -0.010246912017464638, -0.011725249700248241, -0.01807340793311596, 0.040871698409318924, 0.0010861074551939964, 0.001600627088919282, -0.004337182734161615, -0.02174026519060135, -0.0062974304892122746, -0.024580994620919228, -0.004826338961720467, 0.007993170991539955, -0.021001096814870834, 0.021247485652565956, 0.006409754976630211, -0.010152704082429409, 0.01659506931900978, 0.026827488094568253, -0.0018479226855561137, -0.011949899606406689, -0.03843678906559944, 0.008413482457399368, -0.0012935458216816187, -0.0027465203311294317, 0.008159846067428589, -0.003224806161597371, -0.01807340793311596, -0.0007400749018415809, -0.006532949861139059, -0.007478651590645313, -0.002108805812895298, -0.013109380379319191, 0.00162599072791636, 0.011797717772424221, 0.020290914922952652, 0.007804755587130785, 0.019856108352541924, -0.0020254680421203375, 0.01124696433544159, -0.00939179491251707, 0.003418656764551997, -0.0007713265367783606, -0.007674314081668854, 0.004098040051758289, 0.007681560702621937, -0.0028298578690737486, -0.005210416857153177, -0.01234122458845377, -0.021319953724741936, -0.012051354162395, -0.012689068913459778, -0.013116627000272274, -0.002715721493586898, 0.0015834160149097443, 0.016768991947174072, -0.019754653796553612, 0.012993432581424713, 0.01659506931900978, -0.007090950384736061, -0.008196080103516579, -0.0015634874580428004, -0.0004728508065454662, -0.0077830152586102486, 0.007891716435551643, 0.011297691613435745, -0.017116835340857506, 0.0034893127158284187, -0.007956936955451965, 0.01907346025109291, -0.008029405027627945, -0.007623586803674698, -0.0034168451093137264, 0.004964027088135481, 0.0144790168851614, -0.004435013979673386, 0.006982248742133379, -0.020276421681046486, -0.013464471325278282, -0.009638184681534767, -0.00017075166397262365, -0.006022053770720959, 0.0012437243713065982, 0.016319692134857178, 0.01560951117426157, -0.006793833337724209, 0.0033045203890651464, -0.021247485652565956, 0.0030726243276149035, -0.0005358069320209324, -0.009594704024493694, -0.0076598203741014, -0.005003884434700012, -0.022551901638507843, 0.009500496089458466, -0.001749185612425208, 0.024957824498414993, 0.00023914292978588492, 0.012565873563289642, 0.004663286730647087, 0.010877379216253757, 0.01584140583872795, -0.0021867083851248026, 0.004413273651152849, -0.004474871326237917, -0.0006422436563298106, 0.021363435313105583, 0.018638653680682182, -0.009891821071505547, -0.013978990726172924, 0.000574305362533778, -0.00325198145583272, -0.00426471559330821, 0.016087796539068222, 0.02008800581097603, 0.01666753739118576, -0.016464628279209137, 0.028755124658346176, 0.011160003021359444, -0.016653042286634445, -0.007254002150148153, 0.005311871413141489, -0.021030083298683167, -0.004224858246743679, 0.0153196407482028, -0.019015485420823097, 0.009746885858476162, -0.010942600667476654, 0.019058967009186745, 0.017798030748963356, -0.0030581308528780937, -0.013029666617512703, -0.0023425135295838118, -0.016696523874998093, 0.014015224762260914, 0.0007853670977056026, 0.01011647004634142, -0.017624108120799065, 0.0028697149828076363, 0.017653094604611397, 0.008341015316545963, 0.015870394185185432, 0.0013234387151896954, -0.00042687918175943196, -0.007080079987645149, -0.013522445224225521, -0.0008918038220144808, 0.0061633652076125145, -0.003909624181687832, -0.011377405375242233, 0.007286612410098314, -0.007667067460715771, 0.01900099217891693, 0.004116157069802284, -0.003001968376338482, -0.0047103906981647015, 0.012805016711354256, 0.007196028251200914, -0.0005004790145903826, 0.005395209416747093, 0.023479487746953964, -0.017971953377127647, 0.016870446503162384, 0.0001228551409440115, -0.028247851878404617, -0.005916975904256105, -0.00650396291166544, -0.006938768085092306, 0.01118899043649435, -0.02140691503882408, 0.008956989273428917, 0.010935354046523571, -0.02650863118469715, 0.006489469204097986, -0.008058391511440277, 0.008464209735393524, 0.0020363382063806057, 0.006667015142738819, 0.005358975380659103, -0.012928211130201817, -0.000970159366261214, -0.0022863512858748436, -0.031103074550628662, -0.007029352709650993, 0.012399198487401009, -0.013681874610483646, -0.00030028741457499564, 0.007971430197358131, 0.0016640361864119768, -0.005985819734632969, -0.037161361426115036, -0.00855117104947567, 0.00021751588792540133, 0.006583677139133215, -0.012674574740231037, 0.023450499400496483, -0.007514885161072016, -0.006956885103136301, 0.00483358558267355, -0.018334290012717247, 0.016754496842622757, 0.005743053741753101, 0.0029222541488707066, -0.008616391569375992, -0.004127027001231909, -0.003132410114631057, -0.006319170817732811, -0.015957355499267578, 0.017913978546857834, 0.0022193186450749636, 0.00042167058563791215, -0.005761170294135809, -0.014174653217196465, -0.0022301888093352318, -0.013000679202377796, -0.020812680944800377, -0.0010498736519366503, -0.012174548581242561, 0.0011621983721852303, 0.00361975422129035, -0.002058078534901142, 6.623987428611144e-05, 0.020145978778600693, 0.004808221943676472, 0.012609354220330715, 0.01537761464715004, 0.009022209793329239, 0.006833690218627453, 0.009022209793329239, 0.013044159859418869, -0.0014692796394228935, -0.008427976630628109, -0.014189147390425205, -0.002974793082103133, 0.012747042812407017, 0.00912366434931755, -0.0010018638567999005, -0.03223356604576111, 0.0070112356916069984, -0.0033661178313195705, 0.026610085740685463, 0.004996637813746929, 0.023914292454719543, 0.022696837782859802, 0.009471508674323559, -0.008029405027627945, 0.004985767416656017, 0.01336301676928997, 0.008870027959346771, -0.011906418949365616, 0.0024004876613616943, 0.004185000900179148, -0.015189199708402157, 0.0011558574624359608, -7.78459980210755e-06, 0.025624526664614677, 0.01878358982503414, -0.01038460060954094, 0.015131225809454918, 0.002320773433893919, -0.007703301031142473, -0.013790575787425041, 0.0012428185436874628, -0.02769709937274456, -0.01584140583872795, 0.023870812729001045, -3.5101471439702436e-05, -0.010783172212541103, 4.6141449274728075e-05, 0.0008487762534059584, 0.013964497484266758, -0.02145039476454258, 0.000995522947050631, 0.008174339309334755, 0.009964288212358952, -0.01449351105839014, 0.030349411070346832, 0.015928367152810097, -0.046321261674165726, -0.017942965030670166, 0.006435118615627289, -0.01115275640040636, -0.022972214967012405, -0.0018379583489149809, 0.01332678273320198, 0.017522653564810753, -0.008558417670428753, -0.002302656415849924, -0.009746885858476162, -0.0012708996655419469, 0.008536677807569504, -0.007007612381130457, 0.01250065304338932, -0.003262851620092988, 0.01659506931900978, 0.013718107715249062, 0.0016984583344310522, 0.011000574566423893, -0.010428080335259438, -0.00429370254278183, 0.004058182705193758, -0.014508004300296307, -0.0050691054202616215, 0.002141416072845459, -0.03269735723733902, -0.019203901290893555, -0.01426161453127861, 0.0016812472604215145, -0.011333925649523735, -0.011689016595482826, 0.0161602646112442, 0.016855953261256218, 0.02310265600681305, 0.001996481092646718, 0.0025508578401058912, 0.004819092340767384, 0.0016776238335296512, -0.01072519738227129, 0.00871059950441122, -0.004123403690755367, -0.0032302411273121834, -8.761213393881917e-06, -0.004790105391293764, 0.014276107773184776, 0.002882397035136819, 0.014152913354337215, -0.0019077083561569452, 0.0034277152735739946, -0.011254210956394672, 0.0158848874270916, -0.014761640690267086, -0.00535172875970602, 0.0028968905098736286, -0.0022120720241218805, -0.01634867861866951, 0.008870027959346771, -0.0026432538870722055, -0.005170559976249933, 0.013573172502219677, 0.008348261937499046, 0.007913456298410892, 0.0029566760640591383, -0.017971953377127647, -0.003525546519085765, -0.00637714471668005, 0.012602107599377632, -0.0016413901466876268, -0.011036808602511883, -0.01688493974506855, -0.039828166365623474, 0.012573120184242725, 0.0018089712830260396, -0.014326835051178932, -0.016624055802822113, 0.012993432581424713, -0.0011957145761698484, -0.0010969775030389428, 0.020464837551116943, -0.009906314313411713, 0.015305147506296635, 0.000803031085524708, -0.019450290128588676, -0.020421355962753296, 0.011036808602511883, -0.0003786429588217288, 0.004043689463287592, -0.005967703182250261, -0.005616235546767712, 0.016116783022880554, 0.006717742420732975, 0.018058914691209793, -0.016551587730646133, -0.0020236563868820667, 0.009942548349499702, -0.030407385900616646, -0.001138646388426423, -0.0019077083561569452, -0.02332005836069584, -0.01605881005525589, 0.01753714680671692, -0.019058967009186745, -0.006435118615627289, -0.010768678039312363, -0.002039961516857147, 0.008971482515335083, 0.017551640048623085, -0.01031213253736496, -0.013768834993243217, 0.006652521435171366, 0.005529274232685566, -0.0026976047083735466, -0.00912366434931755, -0.004340806510299444, 0.011500600725412369, 0.026001358404755592, 0.007536625489592552, 0.015435589477419853, 0.004416897427290678, 0.019783642143011093, -0.022262033075094223, 0.006884417496621609, 0.003623377764597535, -0.016174757853150368, 0.008000417612493038, -0.0030816826038062572, -0.007877222262322903, 0.017624108120799065, 0.02424764260649681, 0.0040291957557201385, 0.01431958843022585, -0.023363539949059486, -0.002695793053135276, 0.002429474610835314, -0.0006359027465805411, -0.013457224704325199, -0.018638653680682182, -0.016551587730646133, -0.0006073686527088284, 0.011377405375242233, -0.013529692776501179, -0.01384854968637228, -0.004529221914708614, -0.00874683354049921, -0.004808221943676472, 0.010210677981376648, 0.005326365120708942, 0.016000835224986076, -0.021363435313105583, 0.010804912075400352, -0.019276369363069534, -0.015971848741173744, 0.02155184932053089, -0.0110295619815588, 0.012391951866447926, 0.005112585611641407, 0.0073771970346570015, -0.0176096148788929, -0.0013107568956911564, -0.0080801323056221, -0.007072833366692066, -0.005366222467273474, 0.0032918385695666075, 0.021189512684941292, 0.014094939455389977, -0.019740160554647446, -0.009514989331364632, 0.01637766696512699, -0.011725249700248241, 0.015276160091161728, -0.012797770090401173, -0.003768312744796276, -0.0003682257665786892, 0.021175019443035126, -0.042089153081178665, -0.011464366689324379, 0.01183395180851221, -0.01598634198307991, 0.011913665570318699, 0.001363295828923583, -0.0060981446877121925, -0.021102551370859146, -0.001158574945293367, 0.005409702658653259, -0.005286507774144411, 0.002376935677602887, 0.004199494607746601, -0.04710390791296959, -0.03310317546129227, -0.01810239441692829, -0.00874683354049921, 0.01038460060954094, -0.0196531992405653, 0.004217611625790596, -0.0015272536547854543, -0.01316735427826643, -0.0036396828945726156, -0.0017836076440289617, 0.0189720056951046, 0.02011699229478836, -0.009587457403540611, 0.018580680713057518, 0.005877118557691574, 0.009957041591405869, 0.0029548644088208675, -0.017073355615139008, 0.01584140583872795, -0.0007690619095228612, 0.007855482399463654, -0.02062426507472992, 0.011058548465371132, -0.029218917712569237, -0.001002769684419036, 0.008703352883458138, -0.014819614589214325, -0.011275950819253922, 0.010623742826282978, -0.007761274930089712, -0.00679745664820075, 0.0012337600346654654, 0.0024113578256219625, -0.014529744163155556, 0.028610190376639366, -0.0059568327851593494, -0.014841355383396149, 0.008123612031340599, -0.018986498937010765, 0.026668060570955276, 0.004717637784779072, -0.0021957668941468, -0.0070112356916069984, 0.0038081700913608074, -0.01072519738227129, 0.005329988431185484, 0.006964131724089384, 0.007522132247686386, 0.005250274203717709, -0.012022366747260094, -0.03130597993731499, -0.00937730073928833, 0.002244682516902685, -0.005786533933132887, 0.018450237810611725, 0.0012835814850404859, -0.004235728178173304, -0.02529117651283741, 0.01663854904472828, 0.0017890427261590958, 0.0165226012468338, 0.0026215137913823128, 0.0005670585669577122, -0.010464314371347427, 0.011268704198300838, -0.01160205528140068, -0.005137949250638485, -0.00839174259454012, 0.013950004242360592, -0.01189192570745945, 0.017450185492634773, 0.01255862694233656, 0.009986029006540775, -0.004797352012246847, -0.006906157825142145, -0.021856212988495827, 0.011138263158500195, -0.007529378868639469, -0.015479069203138351, 0.008638132363557816, -0.02263886295258999, 0.027059385553002357, -0.004065429791808128, -0.003213935997337103, -0.015421095304191113, -0.0008333768928423524, -0.01681247167289257, -0.01850821264088154, 0.0026867345441132784, -0.012957198545336723, -0.0027990592643618584, 0.014355822466313839, 0.013623899780213833, 0.000970159366261214, -0.018870551139116287, 0.008370001800358295, 0.0015109485248103738, -0.01775454916059971, 0.007862729020416737, 0.016870446503162384, -0.02432011067867279, 0.005590871907770634, -0.0316828116774559, -0.011333925649523735, -0.015276160091161728, -0.00813810620456934, 0.0021957668941468, 0.0063155475072562695, 0.004351676441729069, 0.0255085788667202, 0.01918940804898739, -0.005511157214641571, 0.018957512453198433, -0.013189095072448254, 0.004326312802731991, -0.0003170455456711352, 0.01882706955075264, 0.0027211566921323538, 0.0014837731141597033, -0.014073198661208153, 0.027146345004439354, -0.012841250747442245, -0.011616548523306847, 0.01230499055236578, -0.017377719283103943, -0.02558104693889618, 0.014022471383213997, -0.004739378113299608, 0.016406653448939323, 0.00246570841409266, -0.013319536112248898, 0.01297169178724289, -0.02162431739270687, 0.008196080103516579, -0.026494137942790985, 0.015638496726751328, 0.010942600667476654, -0.013392004184424877, -0.015116731636226177, 0.016116783022880554, -0.011145509779453278, 0.00643874192610383, -0.011181743815541267, -0.03130597993731499, 0.0029675462283194065, -0.029624735936522484, -0.00043503177585080266, -0.0015290654264390469, -0.004916923586279154, 0.013196341693401337, 0.005569131579250097, -0.011449873447418213, -0.002820799592882395, -0.01584140583872795, 0.02008800581097603, -0.023624422028660774, -0.014718160033226013, 0.022189565002918243, 0.02655211091041565, 0.0029802280478179455, -0.003855273826047778, -0.0032048774883151054, -0.013102133758366108, -0.021348940208554268, -0.005790157709270716, 0.002302656415849924, 0.028508735820651054, -0.00011968469334533438, 0.010326625779271126, 0.0029657345730811357, 0.012254263274371624, -0.00025340996216982603, 0.016942912712693214, 0.0020073512569069862, -0.0036469297483563423, 0.02152286283671856, -0.020059019327163696, -0.0004334465484134853, -0.004366170149296522, -0.0006173329311423004, 0.017696576192975044, -0.010913613252341747, 0.016551587730646133, -0.0032936502248048782, -0.005677832756191492, 0.004290079232305288, -0.021725771948695183, -0.0004964027320966125, 0.007398937363177538, -0.002244682516902685, 0.007529378868639469, 0.013449978083372116, 0.001940318732522428, -0.007797508966177702, -0.022899746894836426, -0.029160944744944572, 0.004898806568235159, -0.030842190608382225, -0.003444020403549075, 0.0017627732595428824, -0.001749185612425208, 0.008022157475352287, -0.017479173839092255, -0.011768730357289314, -0.012652834877371788, -0.012102081440389156, -0.027639124542474747, -0.0075438725762069225, 0.006993119139224291, -0.0019421305041760206, 0.005558261182159185, -0.013950004242360592, -0.006532949861139059, -0.0060655344277620316, 0.0038335337303578854, -0.0009149028919637203, 0.0001858113391790539, -0.006993119139224291, -0.032784320414066315, -0.023551953956484795, -0.005819144658744335, -0.010239665396511555, 0.008283041417598724, -0.007587352767586708, -0.007927950471639633, -0.009942548349499702, 0.00547854695469141, -0.0012935458216816187, 0.0050437417812645435, -0.0063227941282093525, 0.0008655343553982675, 0.034320633858442307, -0.008304781280457973, 0.010304885916411877, -0.007250378839671612, 0.004134273622184992, -0.012884731404483318, 0.026233254000544548, 0.013739848509430885, 0.013218081556260586, -0.006264820229262114, 0.009007716551423073, -0.008652625605463982, 0.0176096148788929, 0.003518299665302038, 0.02805943600833416, 0.009920807555317879, -0.0011558574624359608, -0.015797926113009453, 0.004822715651243925, 0.012667328119277954, -0.016870446503162384, 0.0011939029209315777, 0.0019638705998659134, -0.005953209474682808, 0.011036808602511883, -0.005130702629685402, 0.01413842011243105, -0.00937730073928833, -0.02966821752488613, -0.012747042812407017, -0.037161361426115036, -0.008949742652475834, 0.02191418781876564, 0.010174443945288658, -0.025537565350532532, -0.01968218758702278, 0.002058078534901142, -0.010515041649341583, -0.01717481017112732, -0.02159533090889454, 0.012565873563289642, -0.005714066326618195, -0.014884836040437222, 0.01720379665493965, 0.008471456356346607, 0.009181639179587364, 0.00989906769245863, -0.034900370985269547, 0.008036651648581028, -0.014000731520354748, -0.02400125376880169, 0.013957250863313675, -0.004471248015761375, 0.006366274785250425, -0.004808221943676472, 0.005822767969220877, -0.008717846125364304, -0.004656040109694004, -0.012152808718383312, 0.023479487746953964, -0.010036756284534931, -0.03498733416199684, 0.00986283365637064, 0.015681978315114975, -0.006594547536224127, 0.01742119900882244, 0.014355822466313839, 0.004108909983187914, 0.002302656415849924, -0.0014946432784199715, -0.002501942217350006, 0.008471456356346607, -0.0011087534949183464, -0.005355352070182562, -0.006319170817732811, 0.004315442871302366, 0.001462938729673624, -0.007196028251200914, 0.016768991947174072, 0.01950826495885849, 0.001214737305417657, 0.0005176900885999203, 0.00019792700186371803, -0.010602002963423729, 0.027131851762533188, 0.0017981012351810932, -0.003655988024547696, 0.01566748507320881, 0.01724727638065815, 0.003599825780838728, 0.008754080161452293, 0.017551640048623085, 0.023073669523000717, 0.01388478372246027, 0.013747095130383968, 0.008877274580299854, -0.030117515474557877, -0.0061380015686154366, 0.0007355456473305821, 0.016015328466892242, -0.011667275801301003, 0.014812367968261242, 0.018841562792658806, 0.01207309402525425, -0.01997205801308155, -0.005199546925723553, -0.002813552739098668, 0.027957981452345848, -0.02008800581097603, -0.008254054002463818, 0.01516021229326725, 0.006000313442200422, 0.023595435544848442, -0.018493719398975372, 0.014508004300296307, 0.0033733646851032972, -0.0016957407351583242, -0.023580942302942276, -0.04739378020167351, -0.0004160090466029942, -0.0035599686671048403, -0.005090845748782158, 0.002820799592882395, 0.01128319837152958, -0.019957564771175385, -0.02604483813047409, 0.008732340298593044, -0.02801595628261566, 0.00833376869559288, 0.01537761464715004, -0.007319223135709763, 0.005887988489121199, 0.0009656301699578762, -0.006471352651715279, -0.005420573055744171, -0.003512864699587226, -0.0063155475072562695, 0.006811949890106916, -0.0003218012279830873, -0.02471143566071987, -0.031161049380898476, -0.0059640794061124325, 0.013297796249389648, -0.01342099066823721, 0.025189721956849098, -0.0036650465335696936, -0.004210364539176226, -0.0021631564013659954, 0.0010281333234161139, -0.007891716435551643, -0.02208811044692993, 0.011145509779453278, -0.02050831727683544, 0.005123456008732319, -0.02026192843914032, 0.031566865742206573, 0.008014910854399204, 0.001559864031150937, -0.011739743873476982, -0.0006345440051518381, 0.003793676383793354, -0.015826912596821785, 0.009268599562346935, -0.005406079348176718, -0.004974897485226393, 0.018261823803186417, -0.0018750979797914624, -0.01605881005525589, -0.023508474230766296, -0.025450604036450386, -0.0042212349362671375, 0.008051144890487194, 0.000915355805773288, -0.009971534833312035, 0.007366327103227377, -0.0030834944918751717, 0.020928628742694855, 0.007069210056215525, -0.0046705338172614574, -0.009029457345604897, -0.004594442900270224, 0.01400797814130783, 0.006609040778130293, -0.02521870844066143, -0.027276787906885147, 0.0055328975431621075, 0.0030418254900723696, -0.01900099217891693, -0.0071453009732067585, 0.0009538541780784726, -0.032030656933784485, 0.019609719514846802, 0.022044628858566284, -0.0035654036328196526, -0.004576325882226229, 0.0024240396451205015, 0.010573015548288822, 0.008949742652475834, 0.01649361476302147, 0.0025001305621117353, -0.015710964798927307, -0.019029978662729263, 0.009761379100382328, -0.011587562039494514, -0.015044264495372772, -0.014312341809272766, 0.009087431244552135, -0.012449925765395164, -0.021464889869093895, -0.014855848625302315, 0.016044314950704575, 0.0009447957272641361, -0.012478912249207497, -0.02482738345861435, -0.0037012803368270397, -0.03162483870983124, -0.009819352999329567, 0.016247224062681198, 0.0042139883153140545, 0.007264872081577778, 0.003869767300784588, -0.008623638190329075, 0.006942391861230135, -0.03988613933324814, -0.022508421912789345, 0.04362546652555466, 0.011225223541259766, 0.017218289896845818, -0.02694343589246273, -0.007290236186236143, 0.011138263158500195, -0.004637923091650009, 0.011123768985271454, -0.0018497343407943845, -0.0013089451240375638, -0.0005666056531481445, 0.029146449640393257, 0.00650396291166544, -0.007985924370586872, -0.008130859583616257, -0.008638132363557816, -0.004145144019275904, 0.005214040167629719, 0.02489985153079033, 0.009819352999329567, 0.009717898443341255, 0.010355613194406033, -0.00156982836779207, 0.007449664641171694, 0.0009611009154468775, 0.022624369710683823, -0.007920702919363976, -0.01404421217739582, -0.0048843128606677055, 0.026899956166744232, 0.018116887658834457, 0.0029458061326295137, 0.002270046155899763, 0.001235571806319058, 0.02116052620112896, 0.004145144019275904, 0.003668669844046235, 0.020059019327163696, -0.016087796539068222, -0.009138158522546291, -0.03003055416047573, -0.009246859699487686, -0.0040618060156702995, 0.014826861210167408, -0.005797404330223799, -0.0035527218133211136, -0.002333455253392458, -0.0017519030952826142, -0.000995522947050631, 0.007536625489592552, 0.007427924312651157, -0.0011114710941910744, -0.02611730620265007, 0.011783224530518055, 0.00937730073928833, -0.00013700895942747593, -0.019624212756752968, 0.003549098502844572, 0.01656608283519745, -0.005543767940253019, 0.0036795400083065033, -0.01850821264088154, 0.007188781164586544, 0.012689068913459778, -0.02065325155854225, 0.02040686272084713, 0.003978468477725983, -0.002507377415895462, 0.0022428706288337708, -0.013254315592348576, 0.011667275801301003, -0.008130859583616257, -0.0028715268708765507, 0.00040400659781880677, 0.02047933079302311, 0.01900099217891693, 0.0073771970346570015, 0.011551328003406525, 0.016218237578868866, -0.00598944304510951, -0.010573015548288822, 0.005627105478197336, -0.005116209387779236, 0.005174183286726475, 0.010594756342470646, 0.0018325232667848468, -0.005804650951176882, -0.0030581308528780937, 0.009601950645446777, -0.0026794876903295517, 0.010558522306382656, 0.010978834703564644, 0.010964340530335903, 0.011109275743365288, 0.012565873563289642, 0.019928576424717903, 0.013152861036360264, 0.021015590056777, 0.0033081439323723316, 0.022218551486730576, 0.004525598604232073, -0.00413065031170845, -0.001263652928173542, -0.0035527218133211136, 0.011478859931230545, -0.005833637900650501, 0.010913613252341747, -0.010609249584376812, 0.015566030517220497, -0.006844560615718365, -6.975001451792195e-05, 0.0077757686376571655, 0.0002258949534734711, 0.013754341751337051, 0.004576325882226229, -0.014508004300296307, -0.008398989215493202, -0.0022555524483323097, 0.022406967356801033, 0.00448936503380537, -0.024015747010707855, -0.012515146285295486, 0.030842190608382225, -0.02942182682454586, -0.015855900943279266, -0.0038770141545683146, -0.013058653101325035, -0.0016730946954339743, 0.00044975176570005715, -0.007978677749633789, 0.006007560063153505, -0.01795746013522148, -0.005974949803203344, -0.023262085393071175, 0.005869871936738491, 0.002739273477345705, -0.0286391768604517, 0.0028171760495752096, 0.0052430275827646255, 0.017160316929221153, -0.0008446999127045274, 0.004964027088135481, 0.004366170149296522, -3.425223985686898e-05, -0.023363539949059486, -0.006938768085092306, -0.022406967356801033, -0.015218186192214489, 0.01987060345709324, 0.008370001800358295, 0.004127027001231909, -0.0009538541780784726, -0.01361665315926075, -0.019696680828928947, 0.012333977967500687, -0.0013605783460661769, 0.006398885045200586, 0.021030083298683167, 0.0004751154046971351, -0.008543924428522587, 0.00013055482122581452, -0.00912366434931755, 0.01297169178724289, 0.011435380205512047, 0.01279052346944809, 0.020145978778600693, 0.0025001305621117353, -0.0017038934165611863, 0.011551328003406525, 6.561710324604064e-05, -0.022943226620554924, 0.01099332794547081, 0.0012093022232875228, 0.0049024298787117004, 0.007920702919363976, -0.013877536170184612, -0.0027193448040634394, 0.0019638705998659134, 0.0015906627522781491, 0.00011832593008875847, -0.0001564846170367673, 0.008014910854399204, 0.030813204124569893, -0.02033439464867115, 0.02403024025261402, -0.01185569167137146, -0.013921016827225685, 0.027204319834709167, 0.028943540528416634, 0.0027555786073207855, -0.0021504745818674564, -0.019058967009186745, 0.009804859757423401, -0.003909624181687832, 0.0009946171194314957, 0.0040219491347670555, 0.017377719283103943, -0.00011555178207345307, 0.010964340530335903, 0.011312184855341911, -0.0018116888822987676, 0.003112481441348791, -0.01404421217739582, -0.02252291515469551], 'id': 'c3b461ad-4a47-45d0-893f-bb417a47db56', '_distance': 1.080862283706665}), Document(page_content='34 net income tax benefit related to an India Supreme Court decision on withholding taxes in the third quarter of fiscal year \\n2021. Refer to the Non -GAAP Financial Measures section below for a reconciliation of our financial results reported in \\naccordance with GAAP to non -GAAP financial results. See Note 12 – Income Taxes of the Notes to Financial Statements \\nin our fiscal year 2022 Form 10 -K for further discussion. \\nFiscal Year 2022 Compared with Fiscal Year 2021 \\nRevenue increased $30.2 billion or 18% driven by growth across each of our segments. Intelligent Cloud revenue \\nincreased driven by Azure and other cloud services. Productivity and Business Processes revenue increased driven by \\nOffice 365 Commercial and LinkedIn. More Personal Computing revenue increased driven by Search and news \\nadvertising and Windows. \\nCost of revenue increased $10.4 billion or 20% driven by growth in Microsoft Cloud. \\nGross margin increased $19.8 billion or 17% driven by growth across each of our segments. \\n• Gross margin percentage decreased slightly. Excluding the impact of the fiscal year 2021 change in \\naccounting estimate for the useful lives of our server and network equipment, gross margin percentage \\nincreased 1 point driven by improvement in Productivity and Business Processes. \\n• Microsoft Cloud gross margin percentage decreased slightly to 70%. Excluding the impact of the change in \\naccounting estimate, Microsoft Cloud gross margin percentage increased 3 points driven by improvement \\nacross our cloud services, offset in part by sales mix shift to Azure and other cloud services. \\nOperating expenses increased $6.3 billion or 14% driven by investments in cloud engineering, LinkedIn, Gaming, and \\ncommercial sales. \\nKey changes in operating expenses were: \\n• Research and development expenses increased $3.8 billion or 18% driven by investments in cloud \\nengineering, Gaming, and LinkedIn. \\n• Sales and marketing expenses increased $1.7 billion or 8% driven by investments in commercial sales and \\nLinkedIn. Sales and marketing included a favorable foreign currency impact of 2%. \\n• General and administrative expenses increased $793 million or 16% driven by investments in corporate \\nfunctions. \\nOperating income increased $13.5 billion or 19% driven by growth across each of our segments. \\nCurrent year net income and diluted EPS were positively impacted by the net tax benefit related to the transfer of \\nintangible properties, which resulted in an increase to net income and diluted EPS of $3.3 billion and $0.44, respectively. \\nPrior year net income and diluted EPS were positively impacted by the net tax benefit related to the India Supreme Court \\ndecision on withholding taxes, which resulted in an increase to net income and diluted EPS of $620 million and $0.08, \\nrespectively. \\nGross margin and operating income both included an unfavorable foreign currency impact of 2%. \\nSEGMENT RESULTS OF OPERATIONS \\n \\n(In millions, except percentages) 2022 2021 Percentage \\nChange \\n \\nRevenue \\n \\nProductivity and Business Processes $ 63,364 $ 53,915 18% \\nIntelligent Cloud 75,251 60,080 25% \\nMore Personal Computing 59,655 54,093 10% \\nTotal $ 198,270 $ 168,088 18% \\n \\nOperating Income \\n \\nProductivity and Business Processes $ 29,687 $ 24,351 22% \\nIntelligent Cloud 32,721 26,126 25% \\nMore Personal Computing 20,975 19,439 8% \\nTotal $ 83,383 $ 69,916 19%', metadata={'vector': [0.04216254875063896, -0.013476958498358727, -0.004202566109597683, 0.03570127487182617, 0.0005548379267565906, -0.016125807538628578, -0.0518270842730999, 0.045393187552690506, -0.034113336354494095, 0.015482417307794094, 0.05869903042912483, -0.022833485156297684, 0.035098955035209656, -0.02413395419716835, -0.06264150142669678, 0.023162024095654488, -0.01989031955599785, -0.0056091248989105225, 0.01709773577749729, -0.0009077611030079424, -0.051224760711193085, 0.02058846689760685, -0.012730900198221207, 0.022614458575844765, -0.014962229877710342, -0.002979099052026868, 0.005807617679238319, 0.0012919125147163868, 0.024599384516477585, 0.0072620888240635395, 0.025790339335799217, -0.0005633936380036175, -0.0045790174044668674, -0.017371518537402153, 0.04281963035464287, 0.003939049784094095, 0.022888241335749626, -0.051854461431503296, 0.054647047072649, -0.013456424698233604, -0.036741651594638824, 0.023764345794916153, 0.0018120998283848166, 0.06297004222869873, 0.017549477517604828, -0.009253858588635921, -0.006204602774232626, 0.017905395478010178, 0.01444204244762659, -0.01875412091612816, -0.0255439355969429, -0.02116340957581997, -0.0014407819835469127, 0.01011627446860075, 0.013004682958126068, 0.004821999464184046, 0.05330551043152809, 0.019780807197093964, 0.001071175211109221, -0.04030082747340202, -0.022053204476833344, -0.015947848558425903, -0.005759705323725939, -0.02008196711540222, -0.000577082799281925, 0.0067863911390304565, -0.028911463916301727, -0.01923324167728424, 0.00221764063462615, -0.030088728293776512, -0.026009365916252136, -0.029431650415062904, 0.010841798968613148, 0.004158076364547014, -0.009493418037891388, 0.002623181324452162, 0.02321678027510643, -0.006632388103753328, 0.017508409917354584, 0.006943816319108009, -0.005828151013702154, 0.028062736615538597, 0.002840496599674225, -0.001639274531044066, -0.0024229777045547962, -0.011539944447577, -0.027378279715776443, -0.08295618742704391, -0.021847866475582123, 0.018548784777522087, 0.02327153831720352, -0.006471540778875351, 0.027583615854382515, -0.022915620356798172, -0.0018514561234042048, -0.01738520711660385, -0.013654916547238827, -0.0023254426196217537, 0.027036050334572792, -0.011765815317630768, 0.026077810674905777, -0.0036173551343381405, 0.013935544528067112, -0.046953748911619186, 0.01874043233692646, 0.031348131597042084, -0.021450882777571678, 0.00568099319934845, -0.032826557755470276, 0.04161498323082924, -0.023093579337000847, -0.007823343388736248, -0.027282455936074257, 0.02313464693725109, 0.013086817227303982, 0.022094272077083588, -0.0025855363346636295, -0.01923324167728424, 0.02924000285565853, -0.02038312889635563, 0.05155330151319504, -0.02109496481716633, 0.0013552248710766435, -0.03753562271595001, 0.01916479505598545, 0.053716182708740234, -0.013743896037340164, -0.05908232554793358, 0.018576161935925484, -0.03186831623315811, -0.06297004222869873, 0.01555086299777031, -0.05333288758993149, -0.014633690007030964, 0.004267589189112186, -0.024530937895178795, -0.006211447063833475, -0.00322208134457469, 0.023955995216965675, 0.01768636889755726, 0.03874026611447334, -0.012443427927792072, 0.017878016456961632, -0.021533016115427017, -0.012765122577548027, 0.024120263755321503, 0.020903317257761955, 0.01466106902807951, 0.03874026611447334, -0.02669382281601429, -0.011909551918506622, -0.009493418037891388, -0.0032426149118691683, 0.010910244658589363, 0.022819796577095985, -0.03271704539656639, 0.041204310953617096, -0.00500680273398757, -0.00029410261777229607, -0.0038603374268859625, -0.0012345892610028386, 0.027172941714525223, -0.011663147248327732, 0.009821957908570766, 0.03159453347325325, 0.019862942397594452, 0.04013655707240105, 0.030143486335873604, -0.045612212270498276, 0.03244326263666153, 0.0012816457310691476, -0.017768504098057747, -0.02355900965631008, 0.001825788989663124, 0.00019496330060064793, 0.000698146119248122, 0.005212139803916216, -0.010602238588035107, -0.053415022790431976, -0.0056091248989105225, -0.02364114485681057, 0.005927397403866053, -0.02704974077641964, 0.0023921772371977568, -0.013709673658013344, -0.017713746055960655, 0.022751349955797195, -0.01937013305723667, -0.014072435908019543, 0.0008478710660710931, 0.010978690348565578, 0.02704974077641964, 0.05557790771126747, 0.02633790485560894, 0.029294759035110474, -0.006136157084256411, -0.007768586743623018, 0.024859478697180748, -0.017878016456961632, -0.027172941714525223, -0.0014869828009977937, 0.025229085236787796, -0.018863635137677193, 0.013737051747739315, 0.0213003009557724, 0.002693338319659233, -0.009397594258189201, -0.009164879098534584, -0.018357137218117714, -0.01682395301759243, -0.01858985237777233, -0.00845304410904646, 0.0011396209010854363, 0.012463961727917194, -0.005650192499160767, 0.02954116277396679, 0.04410640895366669, 0.012190178968012333, -0.011936930008232594, -0.030280377715826035, -0.022833485156297684, 0.016358522698283195, 0.03520846739411354, 0.01930168643593788, -0.019151106476783752, -0.03515370935201645, -0.0029636987019330263, -0.0202325489372015, -0.016276387497782707, -0.014784270897507668, -0.040930528193712234, -0.03258015215396881, -0.02740565687417984, -0.0092333247885108, 0.02882932871580124, -0.037015434354543686, 0.004555061459541321, 0.009315459989011288, -0.0433124378323555, -0.007310000713914633, 0.024736275896430016, -0.022532323375344276, 0.01853509433567524, 0.008651535958051682, -0.01086233276873827, -0.009965693578124046, 0.029157867655158043, 0.12309274822473526, 0.016591237857937813, 0.01916479505598545, 0.01796015165746212, -0.03422284871339798, -0.010656995698809624, 0.01945226825773716, 0.030444646254181862, 0.0038979826495051384, 0.04594075307250023, 0.020136725157499313, -0.0025581580121070147, -0.007891789078712463, 0.025886163115501404, 0.014031368307769299, -0.0014561822172254324, 0.01839820295572281, 0.029075732454657555, 0.06012270227074623, 0.007693296764045954, 0.015632998198270798, -0.015372904017567635, -0.006546831224113703, 0.01331268809735775, -0.01724831573665142, 0.006553675513714552, 0.00018298529903404415, -0.015003297477960587, 0.022915620356798172, 0.02776157483458519, -0.032552774995565414, -0.019068971276283264, 0.04010917991399765, 0.005893174558877945, 0.004801465664058924, 0.03367528319358826, 0.00596162024885416, -0.009212790988385677, -0.008685759268701077, 0.005677570588886738, -0.008206639438867569, -0.0347977913916111, -0.016166873276233673, -0.014770581386983395, -0.023162024095654488, 0.006030065938830376, 0.018630919978022575, -0.008014990948140621, 0.0033469947520643473, 0.03153977915644646, 0.05218300223350525, 0.0015331836184486747, 0.003158769104629755, -0.011348296888172626, -0.017289383336901665, -0.041505470871925354, -0.049664199352264404, -0.00759747251868248, 0.04706326127052307, 0.04161498323082924, 0.021533016115427017, -0.03498944267630577, 0.03320985287427902, 0.007221021223813295, 0.023955995216965675, -0.004394213669002056, -0.010280543938279152, -0.011704214848577976, 0.041861388832330704, 0.039068803191185, -0.014578933827579021, -0.006303848698735237, -0.008932163938879967, 0.0219984482973814, 0.04386000335216522, -0.019931387156248093, 0.03129337355494499, -0.0006100222817622125, 0.006067711394280195, -0.006368872243911028, 0.06636495143175125, -0.008610469289124012, 0.015728821977972984, 0.0015562840271741152, 0.028281763195991516, 0.0079807685688138, 0.01575619913637638, 0.039369966834783554, 0.004537949804216623, -0.01114980410784483, 0.02045157551765442, -0.0020140146370977163, 0.002961987629532814, 0.014620001427829266, -0.019205862656235695, -0.07145731151103973, -0.003908249549567699, 0.003583132289350033, -0.010670684278011322, -0.045037269592285156, 0.007005417253822088, -0.005369564983993769, 0.023531630635261536, 0.0008838050998747349, -0.013230553828179836, 0.045749105513095856, -0.018151799216866493, -0.010670684278011322, 0.009739822708070278, -0.029349515214562416, -0.0054551223292946815, 0.03427760675549507, 3.427632327657193e-05, 0.021601462736725807, -0.030855320394039154, -0.031129103153944016, 0.06921228766441345, -0.037371352314949036, -0.017919084057211876, 0.03947947919368744, -0.012552941218018532, 0.0567825511097908, -0.040848392993211746, -0.01648172363638878, 0.05754914507269859, 0.014099813997745514, 0.0035249534994363785, -0.025872474536299706, -0.017357829958200455, -0.022628147155046463, 0.025256462395191193, -0.01036267913877964, 0.033757418394088745, -0.013819186948239803, 0.06439371407032013, 0.04323030263185501, -0.017508409917354584, 0.004175187554210424, -0.02279241755604744, 0.0018548783846199512, -0.02264183759689331, -0.001610185019671917, 0.036878541111946106, -0.025927230715751648, 0.028021669015288353, -0.028227007016539574, -0.0019147683633491397, -0.01214226707816124, 0.0055372570641338825, -0.01164945773780346, 0.028719814494252205, -0.02357269823551178, -0.02726876549422741, -0.005376409739255905, -0.006875370629131794, -0.005540679208934307, 0.014921162277460098, -0.05303172767162323, 0.008747360669076443, -0.0003103584749624133, -0.03592030331492424, 0.030636293813586235, 0.02073904685676098, -0.005095782224088907, -0.013531714677810669, -0.000996740534901619, -0.009240169078111649, 0.04095790535211563, -0.03572865575551987, 0.032114721834659576, 0.023955995216965675, -0.023654833436012268, 0.00018277140043210238, 0.014264083467423916, 0.010109429247677326, -0.01238867174834013, 0.032196857035160065, -0.013935544528067112, 0.014086124487221241, 0.025174327194690704, 0.0022125071845948696, 0.0008264817879535258, 0.008411976508796215, -0.031183861196041107, 0.01831606961786747, 0.027036050334572792, 0.020917005836963654, 0.008042369969189167, 0.021902624517679214, 0.017782192677259445, 0.021450882777571678, 0.027282455936074257, 0.0075290268287062645, -0.005574902053922415, -0.004240211099386215, -0.012758278287947178, -0.023695901036262512, -0.07627588510513306, 0.020355749875307083, -0.05081408843398094, -0.010882865637540817, -0.028801949694752693, 0.00021945402841083705, -0.018001219257712364, 0.029212623834609985, -0.007036217954009771, 0.021040208637714386, -0.011902706697583199, 0.03140288591384888, -0.018192866817116737, -0.02243649959564209, 0.01383971981704235, -0.030937455594539642, 0.018220245838165283, -0.0005582602461799979, -0.018685676157474518, -0.0070430622436106205, 0.02803535759449005, 0.025940919294953346, -0.013784963637590408, -0.023175712674856186, 0.006731634493917227, 0.022833485156297684, 0.001396292238496244, 0.006803502328693867, -0.005448277574032545, 0.021546706557273865, 0.0034034624695777893, -0.01266929879784584, 0.036960676312446594, -0.0064886524342000484, -0.019862942397594452, 0.015865713357925415, 0.048021502792835236, 0.033182475715875626, -0.004548216704279184, -0.013730207458138466, 0.017289383336901665, -0.01352487038820982, 0.026885470375418663, -0.014770581386983395, -0.017220938578248024, -0.021190788596868515, -0.029376894235610962, 0.0036721117794513702, 0.06280577182769775, -0.04002704471349716, -0.00015421671560034156, -0.04851431027054787, -0.04657045379281044, 0.00525320740416646, 0.02440773695707321, -0.010054673068225384, -0.015016986057162285, 0.02869243733584881, -0.03419547155499458, -0.05837049335241318, -0.016207940876483917, -0.03884977847337723, 0.008891096338629723, 0.00644416268914938, -0.05579693242907524, 0.058753788471221924, 0.02335367165505886, -0.009466039948165417, 0.03025299869477749, -0.03394906595349312, -0.0425732247531414, -0.0014784270897507668, -0.025899851694703102, -0.0266253761947155, 0.020246237516403198, -0.02328522689640522, -0.005369564983993769, -0.014743203297257423, -0.0021029941271990538, 0.024544628337025642, -0.010218942537903786, -0.009698755107820034, 0.02179311029613018, 0.0035283758770674467, 0.047391802072525024, 0.03452400863170624, -0.0326622873544693, 0.015496105886995792, 0.022107960656285286, 0.009568708948791027, -0.003675533924251795, -0.01682395301759243, 0.007063596043735743, -0.03715232387185097, -0.001350091421045363, 0.01111558172851801, -0.00785072147846222, 0.014578933827579021, 0.0027172942645847797, -0.013367445208132267, 0.003983539529144764, 0.032415881752967834, 0.03485254943370819, -0.024736275896430016, -0.003908249549567699, -0.003956161439418793, 0.013826031237840652, -0.016769196838140488, 0.016016293317079544, -0.016591237857937813, 0.009212790988385677, 0.010814419947564602, 0.02420239895582199, 0.033045582473278046, 0.006365450099110603, 0.01823393441736698, -0.017344139516353607, 0.02271028235554695, 0.0024845788720995188, -0.0035352203994989395, -0.01682395301759243, -0.003362394869327545, 0.01633114367723465, 0.004657729994505644, 0.003119412809610367, 0.006789813283830881, 0.003398329019546509, -0.003956161439418793, 0.022340675815939903, -0.0319504514336586, -0.0015237723710015416, 0.042983897030353546, 0.004777509719133377, -0.0013663473073393106, 0.012840413488447666, 0.022135339677333832, -0.041560228914022446, 0.002140639116987586, -0.0030116108246147633, 0.004746709018945694, -0.013764429837465286, -0.0056193917989730835, 0.022984065115451813, 0.003781624836847186, -0.024311911314725876, -0.018781499937176704, -0.02774788625538349, 0.03331936523318291, 0.012854102067649364, 0.010923933237791061, -0.00594450905919075, 0.02050633169710636, 0.030910078436136246, 0.03293607011437416, 0.007371601648628712, -0.010718596167862415, 0.00926754716783762, 0.013935544528067112, 0.009657688438892365, -0.009732978418469429, 0.018001219257712364, 0.002477734349668026, -0.006283315364271402, -0.00884318444877863, 0.01780957169830799, 0.018699364736676216, 0.020752735435962677, 0.04536581039428711, -0.03449663147330284, -0.00034329795744270086, 0.013203175738453865, -0.0034411074593663216, -0.00374397961422801, -0.009691910818219185, -0.04626929387450218, -0.042983897030353546, 0.03564652055501938, -0.01853509433567524, 0.001918190740980208, 0.05218300223350525, -0.02989708073437214, 0.007590627763420343, -0.005913708359003067, -0.005876063369214535, -0.005653614643961191, 0.010855487547814846, -0.006245669908821583, -0.0213003009557724, 0.0014365040697157383, 0.00837775319814682, -0.028281763195991516, 0.004041718319058418, 0.027501482516527176, 0.005715216044336557, -0.030061351135373116, 0.022272231057286263, -0.010129963047802448, -0.01253240741789341, -0.00549961207434535, 0.12758278846740723, 0.00014277345326263458, -0.003473619231954217, -0.019904009997844696, 0.02676226757466793, 0.001125931739807129, 0.0038534929044544697, 0.0046714190393686295, 0.004007495474070311, -0.011067669838666916, 0.0020003255922347307, -0.00281311827711761, -0.02121816575527191, -0.012190178968012333, 0.01150572206825018, -0.006666610948741436, 0.026214702054858208, -0.029267380014061928, -0.0009950293460860848, 0.01989031955599785, 0.007405824493616819, -0.018973147496581078, -0.023394739255309105, -0.0018103887559846044, 0.0195207130163908, -0.01327162142843008, 0.029705433174967766, -0.028007980436086655, 0.013230553828179836, 0.01682395301759243, 0.016878709197044373, -0.006108778528869152, -0.01164261344820261, -0.021067585796117783, 0.015646686777472496, 0.01430515106767416, 0.022340675815939903, -0.007871255278587341, -0.03216947987675667, 0.0032066809944808483, -0.0004962313105352223, -0.00568099319934845, 0.010889710858464241, -0.05081408843398094, 0.00739898020401597, -0.009774046018719673, -0.014565244317054749, 0.01646803505718708, 0.006235403008759022, -0.00883634015917778, -0.010095740668475628, 0.007221021223813295, -0.008473577909171581, 0.0025290686171501875, -0.022107960656285286, -0.011964308097958565, 0.0008213483961299062, 0.025804027915000916, -0.014264083467423916, -0.010773353278636932, -0.000791403406765312, -0.03712494671344757, -0.01153310015797615, 0.005739171989262104, -0.0227239727973938, 0.006413361988961697, 0.006649499759078026, 0.02052002027630806, 0.012203868478536606, -0.01114980410784483, -0.02620101347565651, -0.02108127437531948, 0.007015684153884649, 0.0009428394841961563, 0.016865020617842674, -0.04065674543380737, -0.008644691668450832, 0.034688279032707214, 0.0024982679169625044, -0.041861388832330704, -0.01149887777864933, -0.0062798927538096905, 0.006947238463908434, 0.01697453297674656, 0.010739129967987537, -0.052922215312719345, -0.003809003159403801, 5.4515930969500914e-05, -0.008596779778599739, -0.008350375108420849, -0.0031057235319167376, -0.0067555904388427734, 0.0003362394927535206, 0.024024439975619316, 0.015920469537377357, -0.008364064618945122, 0.0016632304759696126, -0.01544134970754385, -0.01568775437772274, 0.031265996396541595, 0.024681519716978073, 0.016221631318330765, 0.03203258663415909, 0.03351101279258728, 0.021464571356773376, 0.02527015283703804, 0.011711059138178825, -0.008213483728468418, -0.03909618407487869, 0.004144386854022741, -0.026146257296204567, -0.0038158476818352938, -0.004014340229332447, 0.004534527659416199, -0.0013560804072767496, -0.013353755697607994, 0.032415881752967834, -0.014962229877710342, 0.02294299751520157, -0.01745365373790264, 0.0021286611445248127, 0.020711667835712433, -0.0574943870306015, -0.00858993548899889, -0.005503034219145775, 0.0127788120880723, 0.01853509433567524, 0.006820613984018564, -0.005150538869202137, -0.007453736383467913, 0.02598198689520359, -0.01175212673842907, -0.002898675389587879, -0.017836948856711388, 0.01619425229728222, -0.0012979016173630953, -0.0036105106119066477, -0.027597306296229362, 0.0170292891561985, -0.01590678095817566, 0.0030766341369599104, -0.013826031237840652, -0.003437685314565897, 0.02335367165505886, -0.026953916996717453, -0.0007721530273556709, -0.001984925242140889, 0.013750741258263588, -0.005458544474095106, 0.019849251955747604, 0.0038671819493174553, -0.014099813997745514, -0.007494803983718157, -0.006529719568789005, -0.002559869084507227, -0.016947155818343163, -0.013387979008257389, 0.028665058314800262, -0.001471582567319274, 0.01178634911775589, -0.004739864729344845, -0.014359907247126102, -0.03717970475554466, 0.0024999792221933603, -0.030362511053681374, -0.01761792227625847, 0.025817718356847763, -0.018713053315877914, -0.018713053315877914, 0.01696084439754486, 0.0347977913916111, 0.034113336354494095, 0.009390749968588352, -0.029267380014061928, 0.006728212349116802, -0.024120263755321503, 0.010677528567612171, -0.015810957178473473, 0.020465264096856117, 0.02350425347685814, -0.051279518753290176, -0.007200487423688173, 0.012881480157375336, -0.0003982683992944658, -0.004072519019246101, 0.01305943913757801, 0.015400282107293606, 0.008370908908545971, -0.01626269891858101, -0.027583615854382515, 0.0035420649219304323, -0.020643223077058792, 0.013586470857262611, 0.016947155818343163, 0.008206639438867569, 0.0007024239748716354, -0.008172416128218174, -0.01022578775882721, -0.00720733217895031, 0.01802859641611576, -0.013784963637590408, 0.019493335857987404, -0.0283912755548954, -0.011403053067624569, -0.021533016115427017, 0.01655017025768757, -0.0027703396044671535, 0.011567323468625546, -0.0012833568034693599, 0.020246237516403198, -0.0026762268971651793, -0.0017847216222435236, 0.0007922589429654181, -0.010971845127642155, -0.014223015867173672, -0.0048767561092972755, -0.001984925242140889, 0.0019900586921721697, 0.016372211277484894, 0.006413361988961697, -0.010342145338654518, 0.011827416718006134, 0.010068362578749657, -0.012320226058363914, 0.03296344727277756, -0.024654140695929527, -0.05248416215181351, -0.005540679208934307, -0.02711818553507328, 0.02036944031715393, -0.0001221327984239906, -0.00014929717872291803, 0.002385332714766264, -0.016385899856686592, 0.007857565768063068, 0.016098428517580032, -0.021669907495379448, 0.001238011522218585, -0.0054243216291069984, 0.013743896037340164, 0.014647379517555237, 0.03967112675309181, 0.013819186948239803, -0.028021669015288353, -0.02882932871580124, -0.02357269823551178, -0.005420899484306574, -0.013784963637590408, 0.03953423723578453, -0.004719330929219723, -0.02591354213654995, 0.022682905197143555, -0.01726200431585312, 0.0013073128648102283, -0.000186407589353621, 0.018288690596818924, -0.022258540615439415, -0.003119412809610367, -0.0008204928017221391, -0.03507157787680626, -0.04002704471349716, 0.014154570177197456, -0.015797266736626625, 0.03641311079263687, -0.021669907495379448, -0.013771274127066135, 0.010095740668475628, 0.019548092037439346, 0.02918524667620659, 0.0012046443298459053, -0.014729514718055725, -0.0035454872995615005, 0.055331502109766006, 0.0008277651504613459, 0.024791032075881958, -0.012895169667899609, 0.033894311636686325, 0.018124420195817947, 0.002191973617300391, -0.0005133427330292761, -0.007809654343873262, 0.013538558967411518, 0.02492792345583439, -0.0008440210367552936, -0.016071049496531487, -0.005862374324351549, 0.016796573996543884, -0.018288690596818924, 0.001648685778491199, -0.0015947847859933972, 0.009137501008808613, 0.0016230186447501183, -0.005171072669327259, -0.003675533924251795, 0.040355585515499115, -0.039068803191185, -0.015222323127090931, -0.02676226757466793, 0.005345609039068222, -0.0027942955493927, -0.013819186948239803, 0.02229960821568966, 0.0034582188818603754, 0.022806106135249138, -0.0038124253042042255, -0.001713709207251668, 0.02924000285565853, -0.024448802694678307, 0.028281763195991516, 0.02413395419716835, -0.019972454756498337, 0.0019301687134429812, -0.002205662662163377, -0.04815839231014252, -0.01266929879784584, 0.0010591972386464477, 0.0040314518846571445, -0.027350900694727898, -0.01895945891737938, 0.011211405508220196, -0.005978731904178858, -0.007481114938855171, 0.02469520829617977, -0.031704045832157135, -0.014250394888222218, -0.0006746179424226284, -0.0033692396245896816, -0.005975309293717146, -0.004339457489550114, 0.05054030567407608, 0.02647479623556137, -0.03895929083228111, -0.00047355866990983486, -0.0020567933097481728, -0.008261395618319511, 0.0024640450719743967, 0.01356593705713749, 0.00845304410904646, -0.00525320740416646, 0.008548867888748646, -0.004945201799273491, 0.02229960821568966, -0.012162800878286362, 0.015345525927841663, 0.03874026611447334, -0.04013655707240105, 0.03657738119363785, -0.03586554527282715, -0.018083354458212852, -0.024736275896430016, -0.029513785615563393, -0.002048237482085824, 0.02399706281721592, 0.03753562271595001, -0.03175880387425423, -0.024448802694678307, -0.0004615806683432311, -0.000595905352383852, -0.0468716137111187, -0.002477734349668026, -0.022053204476833344, 0.010472191497683525, 0.006772702094167471, 0.012121733278036118, 0.03748086467385292, -0.012717210687696934, 0.013593316078186035, -0.008466732688248158, -0.0056912596337497234, -0.005355875939130783, 0.012340759858489037, -0.0010882866336032748, 0.01589309051632881, -0.002104705199599266, -0.012963615357875824, -0.004842533264309168, -0.02869243733584881, -0.0022022402845323086, -0.00518133956938982, 0.030225619673728943, -0.019999833777546883, 0.02896622009575367, -0.003268282162025571, -0.012518717907369137, -0.022244852036237717, 0.010212098248302937, 0.011690525338053703, 0.011854794807732105, 0.005708371289074421, 0.009103277698159218, -0.006447584833949804, 0.022326987236738205, -0.0227239727973938, 0.005876063369214535, -0.003015032969415188, -8.657311263959855e-05, -0.009561863727867603, 0.017563166096806526, -0.0013637805823236704, 0.016385899856686592, 0.006670033559203148, -0.008500955998897552, 0.014346218667924404, 0.021190788596868515, 0.009294926188886166, 0.005865796469151974, -0.0034239960368722677, -0.006714522838592529, -0.018439270555973053, -0.007296311669051647, 0.0010095740435644984, 0.012696676887571812, 0.009199101477861404, -0.003928782884031534, -0.005694682244211435, -0.007782275788486004, -0.003651577979326248, 0.0035215311218053102, -0.002191973617300391, -0.013210020028054714, 0.0072620888240635395, -0.01696084439754486, 0.02945902943611145, 0.005694682244211435, 0.0010549193248152733, -0.03145764395594597, -0.025324909016489983, 0.0014305150834843516, -0.007693296764045954, -0.016865020617842674, -0.00482542160898447, -0.015222323127090931, 0.006796658039093018, -0.017138803377747536, -0.002022570464760065, -0.025530245155096054, 0.002898675389587879, -0.01797384023666382, 0.002125238999724388, 0.026214702054858208, 0.03920569643378258, -0.0184666495770216, -0.00937021616846323, -0.015509795397520065, 0.020766425877809525, -0.007891789078712463, -0.021423503756523132, -0.015879401937127113, 0.009555019438266754, -0.012066977098584175, -0.016714438796043396, 0.0027172942645847797, 0.007946545258164406, -0.02973281219601631, 0.07468794286251068, 0.009548175148665905, -0.01589309051632881, -0.003109145909547806, -0.02642004005610943, -0.020629534497857094, 0.023381050676107407, 0.009876714088022709, 0.02455831691622734, 0.0071457307785749435, 0.03961636871099472, 0.012128577567636967, 0.011238783597946167, 0.018439270555973053, -0.00608824472874403, -0.013826031237840652, -0.02194369025528431, 0.020547399297356606, 0.0057699722237885, 0.008959542028605938, -0.017727436497807503, 0.005865796469151974, -0.020396817475557327, 0.018726743757724762, 0.009534485638141632, -0.025105882436037064, -0.024092886596918106, -0.00677954638376832, -0.026775958016514778, -0.03712494671344757, 0.010239476338028908, 0.016865020617842674, -0.009835646487772465, 0.0006108778761699796, -0.003396617714315653, 0.025461800396442413, -0.018767811357975006, 0.004192299209535122, -0.014770581386983395, -0.002700182842090726, -0.010533792898058891, 0.030472025275230408, 0.01050641480833292, -0.014537866227328777, -0.006772702094167471, -0.0028439187444746494, 0.01555086299777031, -0.005034181289374828, -0.0028747194446623325, -0.0010318189160898328, 0.00834353081882, -0.018138110637664795, -0.01576988957822323, 0.004602973349392414, 0.009883559308946133, -0.019274309277534485, 0.0006647788686677814, 0.03449663147330284, -0.005759705323725939, -0.010704907588660717, 0.0015408837934955955, 0.0019318799022585154, -0.025612380355596542, -0.004223099444061518, -0.0005937664536759257, 0.030362511053681374, 0.033127717673778534, -0.029924459755420685, -0.006639232859015465, -0.0033127719070762396, 0.009596087038516998, 0.020040901377797127, 0.011717903427779675, 0.008370908908545971, -0.00937706045806408, -0.006194335874170065, 0.008213483728468418, -0.02443511411547661, 0.01611211709678173, -0.021779421716928482, -0.008637847378849983, 0.0028507632669061422, -0.0038979826495051384, 0.022176407277584076, -0.006478385534137487, 0.011266161687672138, -0.010061517357826233, -0.020615844056010246, 0.01327846571803093, 0.008411976508796215, -0.014565244317054749, -0.005735749378800392, 0.008672069758176804, -0.020040901377797127, -0.019835563376545906, -0.009178568609058857, 0.014592623338103294, -0.004982846789062023, -0.010198408737778664, -0.01916479505598545, -0.0075290268287062645, 0.009397594258189201, 0.017275694757699966, 0.006810347083956003, 0.01164261344820261, -0.0319230742752552, 0.024968991056084633, 0.013189486227929592, 0.011170337907969952, -0.0015280501684173942, -0.016235319897532463, -0.006122467573732138, 0.028281763195991516, -0.002689915942028165, 0.01611211709678173, -0.025379665195941925, 0.00017154203669633716, -0.0059308200143277645, -0.00518133956938982, 0.003959583584219217, -0.01916479505598545, 0.028938841074705124, 0.014825338497757912, 0.018343446776270866, 0.011656302027404308, 0.02250494621694088, -0.018370825797319412, -0.029212623834609985, 0.025010058656334877, -0.016563858836889267, -0.033127717673778534, 0.006885637063533068, -0.006608432158827782, -0.019835563376545906, -0.023120956495404243, 0.008145038038492203, -0.0003854348324239254, -0.0037302905693650246, -0.0003751679905690253, -0.008411976508796215, -0.00013325522013474256, 0.024038128554821014, 0.008850028738379478, 0.021834177896380424, 0.010793887078762054, 0.0018822567071765661, -0.019000526517629623, -0.005465389229357243, 0.007686452008783817, -0.003453085431829095, -0.01867198571562767, -0.002058504382148385, 0.023326294496655464, -0.011882172897458076, 0.001630718819797039, -0.01302521675825119, -0.016769196838140488, 0.014578933827579021, 0.004219677299261093, 0.013038905337452888, 0.0007678751717321575, 0.010971845127642155, 0.0009154612198472023, -0.007070440798997879, 0.014332529157400131, -0.028801949694752693, -0.013155262917280197, -0.010232632048428059, -0.011403053067624569, -0.0067555904388427734, -0.010458502918481827, 0.023969683796167374, 0.0008722548955120146, -0.018275002017617226, -0.0035625987220555544, 0.0031262573320418596, 0.005280585493892431, 0.010232632048428059, 0.01796015165746212, 0.017015600576996803, -0.04815839231014252, -0.0028935419395565987, 0.011471498757600784, 0.01646803505718708, -0.012354448437690735, 0.008925318717956543, 0.020410507917404175, 0.05054030567407608, -0.008678914979100227, 0.009431817568838596, -0.01455155573785305, 0.023969683796167374, -0.002746383659541607, 0.0018223667284473777, 0.023189403116703033, 0.011711059138178825, -0.023408429697155952, -0.016509102657437325, 0.007056751754134893, -0.010704907588660717, 0.024530937895178795, -0.012552941218018532, 0.016810264438390732, -0.014496798627078533, -0.03671427443623543, -0.016426967456936836, 0.002133794594556093, 0.03427760675549507, 0.032826557755470276, -0.01631745509803295, 0.024394046515226364, 0.010157342068850994, -0.0009513951954431832, 0.010465347208082676, 0.022450190037488937, -0.011204561218619347, -0.004448970314115286, -0.022682905197143555, 0.015455039218068123, -0.004038296174257994, -0.011560478247702122, -0.005472233518958092, 0.005003380589187145, -0.0159752257168293, -0.02811749279499054, 0.008507800288498402, 0.034332361072301865, 0.002588958479464054, 0.02755623869597912, 0.02123185619711876, 0.009397594258189201, -0.0007135464111343026, 0.009178568609058857, -0.009541330859065056, -0.0012576896697282791, -0.007385290693491697, 0.010143652558326721, 0.02420239895582199, 0.018849944695830345, 0.024476181715726852, -0.006385983899235725, 0.008754204958677292, -0.013367445208132267, 0.014264083467423916, -0.006314115598797798, -0.00016341410810127854, 0.009383905678987503, -0.014387286268174648, -0.03657738119363785, 0.00858993548899889, -0.0025855363346636295, -0.017138803377747536, -0.00022437355073634535, -0.006153268273919821, -0.009548175148665905, -0.02413395419716835, -0.01995876617729664, 0.013456424698233604, 5.173532190383412e-05, -0.012997837737202644, -0.011170337907969952, 0.03742610663175583, 0.009842491708695889, 0.012710366398096085, -0.0012927681673318148, 0.01050641480833292, -0.00715257553383708, -0.013162108138203621, 0.009541330859065056, 0.016865020617842674, -0.04479086399078369, -0.00908958911895752, 0.004897289909422398, 0.02918524667620659, -0.0018873901572078466, 0.006338071543723345, 0.01530445832759142, -0.0034137291368097067, -0.019055282697081566, -0.008151882328093052, -0.025146950036287308, 0.05787768214941025, 0.027802642434835434, -0.02803535759449005, -0.018904702737927437, 0.02455831691622734, 0.007761742454022169, 0.017439963296055794, -0.005338764283806086, -0.01804228685796261, 0.007501648738980293, 0.013545404188334942, -0.00784387718886137, -0.019397510215640068, -0.023230470716953278, 0.0068582589738070965, -0.03203258663415909, -0.013298999518156052, -0.039999667555093765, 0.003771357936784625, 0.0011883884435519576, 0.023517942056059837, 0.002012303564697504, -0.008042369969189167, 0.00926070287823677, 0.010588550008833408, -0.01711142435669899, 0.003324749879539013, -0.022094272077083588, 0.008439354598522186, 0.013976612128317356, 0.011628923937678337, -0.017508409917354584, 0.01039690151810646, -0.009596087038516998, -0.012621386907994747, 0.007453736383467913, 0.0025923808570951223, -0.018494028598070145, -0.005503034219145775, -0.0003740985121112317, -0.0040006511844694614, -0.026255769655108452, -0.014647379517555237, 0.02143719233572483, -0.028227007016539574, -0.02045157551765442, -0.022847173735499382, -0.007583783473819494, -0.01288832537829876, -0.016235319897532463, -0.011984841898083687, 0.0005954775842837989, -0.005687837488949299, 0.014729514718055725, -0.0040109180845320225, 0.023955995216965675, -0.0024640450719743967, 0.005958198104053736, 0.011314073577523232, -0.03110172599554062, -0.018425581976771355, -0.01924693025648594, 0.008411976508796215, 0.008103970438241959, -0.00812450423836708, 0.012149111367762089, 0.0038398036267608404, -0.00046714188647456467, 0.017905395478010178, 0.004955468699336052, 0.002366509987041354, -0.01519494503736496, -0.002327153692021966, -0.021615151315927505, 0.005663881544023752, -0.011101892217993736, 0.004709064029157162, 0.001414259197190404, 0.011834261007606983, 0.019192174077033997, 0.008001302368938923, -0.008083436638116837, 0.00025538800400681794, -0.03200520947575569, -0.007289466913789511, 0.005533834919333458, -0.011683681048452854, -0.017508409917354584, -0.003370950696989894, 0.030499402433633804, -0.00486306706443429, 0.015537173487246037, 0.02896622009575367, -0.003177591599524021, 0.0009727844735607505, 0.033976443111896515, 0.03827483579516411, -0.015810957178473473, -0.02164253033697605, -0.037015434354543686, -0.009719288907945156, 0.015222323127090931, 0.0023237315472215414, -0.004055407829582691, -0.03110172599554062, -0.014031368307769299, -0.010841798968613148, 0.0050410255789756775, 0.013634382747113705, 0.039999667555093765, -0.0014039924135431647, -0.007761742454022169, -0.021478259935975075, -0.010212098248302937, 0.006865103729069233, 0.016057360917329788, -0.015646686777472496, 0.0072415550239384174, 0.011690525338053703, -0.002576980507001281, 0.01838451437652111, 0.010143652558326721, 0.007898633368313313, -0.01753578893840313, 0.011813727207481861, -0.007919167168438435, 0.0030509671196341515, 0.026871781796216965, 0.0010258299298584461, 0.0045790174044668674, -0.020314684137701988, -0.042627982795238495, -0.005855529569089413, 0.009568708948791027, 0.0031399463769048452, 0.022340675815939903, 0.025571312755346298, -0.015181255526840687, -0.000716540904249996, 0.0019438578747212887, 0.003819270059466362, 0.011656302027404308, -0.005687837488949299, -0.007659073453396559, 0.011012912727892399, -0.0038706043269485235, 0.020917005836963654, -0.01958915963768959, 0.003942472394555807, -0.008535178378224373, 0.03307296335697174, -0.021697286516427994, -0.007303155958652496, 0.004780931863933802, 0.017138803377747536, 0.016372211277484894, -0.014688447117805481, -0.016810264438390732, -0.00017025867418851703, -0.012080665677785873, -0.01738520711660385, -0.02618732489645481, 0.004428436513990164, -0.02223116345703602, -0.020191481336951256, -0.004140964709222317, 0.0006579342880286276, 0.011485188268125057, 0.009390749968588352, 0.008473577909171581, 0.004459237214177847, -0.0035352203994989395, -0.002924342406913638, 0.014031368307769299, 0.012374982237815857, 0.013518025167286396, 0.01288832537829876, -0.014880094677209854, 0.014620001427829266, -0.011348296888172626, -0.007905478589236736, 0.0035146865993738174, 0.023805413395166397, 0.0017445097910240293, 0.00685141421854496, -0.0011105315061286092, 0.00851464457809925, -0.008754204958677292, -0.0029842325020581484, 0.00976720079779625, -0.017426274716854095, -0.022190095856785774, 0.007077285088598728, -0.00454479455947876, 0.0013603582046926022, 2.6014713512267917e-05, 0.005578324664384127, 0.025612380355596542, -0.02847341075539589, -0.003220370039343834, 0.0073442235589027405, -0.02611887827515602, 0.0035146865993738174, 0.0008709715330041945, 0.07644015550613403, 0.015318146906793118, 0.020492643117904663, -0.01015049684792757, -0.013319533318281174, 0.008925318717956543, -0.005417476873844862, -0.040465097874403, -0.0016409856034442782, 0.015564551576972008, -0.022874552756547928, 0.014318840578198433, -0.00596162024885416, -0.004346301779150963, -0.007173109333962202, 0.005694682244211435, -0.017836948856711388, -0.003675533924251795, 0.030472025275230408, 0.004667996428906918, -0.018562473356723785, 0.007898633368313313, 0.007864410988986492, -0.0079807685688138, -0.021382436156272888, -0.026515863835811615, -0.006030065938830376, -0.019684983417391777, 0.01479796040803194, -0.008535178378224373, 0.009466039948165417, -0.003494153032079339, -0.008062903769314289, 0.004743286874145269, 0.021984757855534554, 0.009931471198797226, -0.013038905337452888, 0.005376409739255905, -0.007179953623563051, -0.0055372570641338825, 8.470155444229022e-05, 0.01494854036718607, 0.009958849288523197, -0.027296144515275955, -0.01626269891858101, -0.0005505600711330771, -0.004339457489550114, -0.006098511628806591, -0.007700141053646803, 0.008767894469201565, 0.02654324285686016, 0.01945226825773716, -0.007515337783843279, 0.020533708855509758, -0.022244852036237717, -0.009691910818219185, 0.022477567195892334, -0.005520145408809185, 0.019055282697081566, -0.011546789668500423, -0.005650192499160767, 0.007727519609034061, -0.012689832597970963, 0.005900019314140081, -0.003771357936784625, 0.00139714777469635, -0.0057015265338122845, 0.008939008228480816, 0.006173802074044943, -0.027419347316026688, 0.011170337907969952, 0.002725849859416485, 0.007782275788486004, -0.0015468727797269821, 0.010547482408583164, 0.007440047338604927, -0.01696084439754486, 0.015605619177222252, 0.00614300137385726, -0.0048459554091095924, 0.00039719894994050264, -0.010109429247677326, 0.003959583584219217, 0.019548092037439346, -0.023476874455809593, -0.013052594847977161, 0.020136725157499313, 0.037727270275354385, -0.0042059882543981075, -0.004613240249454975, -0.0026317371521145105, -0.014346218667924404, 0.01867198571562767, -0.00908958911895752, 0.0034701968543231487, -0.015400282107293606, 0.006177224218845367, -0.003230636939406395, -0.0038398036267608404, 0.012463961727917194, 0.004120430909097195, 0.025188017636537552, -0.006676877848803997, -0.009130655787885189, 0.015496105886995792, -0.008583090268075466, 0.004024607129395008, 0.005834995768964291, 8.758910553297028e-05, -0.008644691668450832, -0.0016478302422910929, -0.005746016278862953, -0.0195207130163908, -0.013545404188334942, -0.035892926156520844, 0.0022860863246023655, -0.022737661376595497, 0.0018754121847450733, -0.009842491708695889, 0.010383212938904762, -0.002460622927173972, 0.0007345079211518168, 0.016084739938378334, -0.027569927275180817, -0.03159453347325325, -0.0015015274984762073, -0.001751354313455522, 0.0011567323235794902, -0.014893784187734127, -0.012799345888197422, -0.0034120180644094944, 0.005633080843836069, -0.02179311029613018, -0.0026385816745460033, 0.015236012637615204, 0.009746667928993702, -0.0071457307785749435, 0.0019575469195842743, -0.011704214848577976, 0.006741901393979788, 0.02257339097559452, 0.019287997856736183, -0.0054448554292321205, -0.010581704787909985, 0.01040374580770731, -0.010773353278636932, -0.01972605101764202, 0.0038534929044544697, 0.0011216539423912764, -0.02477734349668026, -0.02513326145708561, -0.0005787939298897982, -0.012710366398096085, 0.003716601524502039, 0.014852716587483883, -0.012450272217392921, -0.012477651238441467, 0.009986227378249168, -0.003935627639293671, -0.005544101819396019, -0.013333221897482872, -0.022039515897631645, 0.01466106902807951, -0.020547399297356606, -0.008049214258790016, 0.0017350984271615744, 0.016139496117830276, 0.0017291094409301877, 0.009048521518707275, 0.0159615371376276, -0.006101934239268303, -0.013079972937703133, 0.033401500433683395, 0.005229251459240913, -0.0308826994150877, 0.012429739348590374, 0.006067711394280195, -0.012860946357250214, 0.009082743898034096, 0.01646803505718708, 0.012943081557750702, 0.013107351027429104, 0.023695901036262512, 0.017357829958200455, -0.015318146906793118, -0.00759747251868248, -0.009842491708695889, 0.003379506291821599, -0.012511873617768288, -0.002161172917112708, -0.013114196248352528, 0.010670684278011322, -0.007919167168438435, -0.014469420537352562, -0.008227173238992691, -0.0038226922042667866, -0.008227173238992691, 0.012518717907369137, -0.036029815673828125, -0.016454346477985382, -0.006242247764021158, 0.02462676167488098, -0.010869177058339119, -0.006081400439143181, 0.03586554527282715, -0.01100606843829155, 0.007754897698760033, -0.02513326145708561, 0.014770581386983395, 0.007090974599123001, -0.04876071587204933, 0.0062080249190330505, 0.007392135448753834, -0.01189586240798235, 0.001909635029733181, 0.010793887078762054, -0.0028832750394940376, 0.008884252049028873, -0.010246321558952332, 8.090495248325169e-05, -0.011854794807732105, 0.005773394834250212, 0.003304216079413891, -0.01780957169830799, 0.014428352937102318, -0.005879485514014959, -0.0029551431071013212, 0.007310000713914633, 0.0015665509272366762, -0.007323689758777618, 0.0006754734786227345, -0.027734197676181793, 0.002280952874571085, 0.03515370935201645, 0.0213003009557724, 0.00204994878731668, 0.0219984482973814, 0.016125807538628578, 0.02223116345703602, -0.015277080237865448, -0.01342220138758421, -0.0018873901572078466, -0.00823401752859354, -0.006916437763720751, 0.0008487266604788601, -0.006563942413777113, 0.004137542564421892, 0.00784387718886137, 0.010273699648678303, -1.975834857148584e-05, -0.00014149009075481445, -0.012183334678411484, -0.003008188446983695, 0.0012174778385087848, -0.0007653084467165172, 0.008405132219195366, 0.008528334088623524, -0.012053287588059902, 0.02052002027630806, 0.008364064618945122, -0.0035352203994989395, 0.012785656377673149, 0.003323038574308157, -0.013983456417918205, -0.00557147990912199, 0.006769279483705759, -0.0032563041895627975, -0.019999833777546883, -0.01064330618828535, 0.03356577083468437, -0.021272923797369003, 0.004072519019246101, 0.011902706697583199, 0.009965693578124046, 0.0008410265436396003, -0.003846648382022977, -0.00739898020401597, 0.013073128648102283, 0.0033298833295702934, -0.013134729117155075, -0.014880094677209854, -0.0009830513736233115, -0.0030338556971400976, -0.008528334088623524, 0.003586554666981101, -0.00018876040121540427, 0.027159253135323524, 0.0019301687134429812, 0.006741901393979788, 0.005054714623838663, -0.01923324167728424, -0.0002269402757519856, -0.01924693025648594, -0.013764429837465286, -0.0005351597792468965, 0.0013201463734731078, -0.02882932871580124, -0.014743203297257423, -0.013990300707519054, 0.02640635147690773, -0.020396817475557327, 0.00562623655423522, 0.007946545258164406, 0.007754897698760033, 0.0014407819835469127, -0.007166264578700066, 0.014866406098008156, -0.004332612734287977, -0.00019111322762910277, -0.00887740682810545, -0.011711059138178825, -0.012299692258238792, 0.01839820295572281, 0.013052594847977161, -0.01618056371808052, 0.0052497852593660355, -0.00976720079779625, -0.0008530045161023736, -0.012019064277410507, 0.005903441458940506, 0.01302521675825119, 0.0004478915361687541, -0.012327070347964764, -0.012066977098584175, -0.008897940628230572, 0.015632998198270798, 0.008610469289124012, -0.0008713993011042476, -0.012409205548465252, -0.03466090187430382, 0.01203275378793478, 0.0008016702486202121, -0.03515370935201645, 0.002496556844562292, -0.01583833433687687, 0.014907472766935825, -0.030225619673728943, -0.025735583156347275, -0.00450714910402894, 0.018302379176020622, -0.00021399975230451673, -0.0015400282572954893, 0.023244159296154976, -0.014537866227328777, -0.012012219987809658, -0.009897247888147831, -0.009746667928993702, -0.011669991537928581, -0.007070440798997879, 0.00735106784850359, -0.002506823744624853, -0.009110122919082642, -0.002914075506851077, -0.001842900412157178, 0.006861681118607521, -0.00663581071421504, 0.025612380355596542, -0.0008346097311004996, 0.0009830513736233115, -0.00922648049890995, 0.003986962139606476, 0.010533792898058891, 0.015742510557174683, 0.011409898288547993, -0.014318840578198433, -0.013552248477935791, -0.01824762299656868, 0.02547548897564411, -0.004623507149517536, -0.0012234668247401714, -0.016344832256436348, -0.01303206104785204, -0.008802116848528385, -0.026652755215764046, -0.015427660197019577, 0.006054021883755922, -0.017166180536150932, 0.01858985237777233, 0.011485188268125057, -0.0212866123765707, 0.020615844056010246, 0.018576161935925484, -0.005677570588886738, -0.005338764283806086, -0.019849251955747604, 0.003963005729019642, 0.0006570786936208606, 0.008774738758802414, -0.004644040483981371, 0.00518133956938982, -0.022970376536250114, 0.0004004073271062225, -0.010848643258213997, -0.020123034715652466, -0.010143652558326721, -0.006423628889024258, 0.0026984717696905136, -0.005123160779476166, 0.022477567195892334, 0.012025909498333931, 0.00644416268914938, -0.012128577567636967, 0.010581704787909985, -0.017645301297307014, 0.005277163349092007, 0.002460622927173972, -0.008446198888123035, 0.004065674729645252, 0.001581951160915196, -0.002852474572136998, 0.00016705028247088194, -0.014359907247126102, -0.03320985287427902, -0.013476958498358727, -0.01852140575647354, -0.002356243086978793, -0.00017122119606938213, -0.011184027418494225, 0.01802859641611576, -0.01356593705713749, 0.012874635867774487, 0.01731676235795021, 0.0008341819630004466, 0.002859319094568491, -0.00020170092466287315, 0.007323689758777618, -0.014428352937102318, 0.016509102657437325, 0.03285393491387367, -0.01745365373790264, 0.01199853140860796, -0.011245627887547016, -0.0017761659109964967, -0.011806882917881012, -0.007706985808908939, -0.007125197444111109, 0.00018352002371102571, 0.006399672944098711, -0.0017727436497807503, 0.000386290397727862, -0.015619308687746525, -0.016782885417342186, -0.027569927275180817, 0.0066837226040661335, -0.010136808268725872, 0.009965693578124046, 0.009000609628856182, 0.006830880884081125, 0.008179261349141598, 0.008192949928343296, -0.011423586867749691, 0.009883559308946133, -0.0033452834468334913, -0.008261395618319511, 0.0038706043269485235, -0.0011875329073518515, -0.02179311029613018, 0.010280543938279152, -0.0028627412393689156, 0.03258015215396881, -2.1295702026691288e-05, 0.0018925236072391272, 0.009178568609058857, 0.01753578893840313, 0.024175019934773445, 0.00824086181819439, 0.0066734557040035725, 0.0106501504778862, 0.00848726648837328, 0.020328372716903687, 0.01731676235795021, -0.00784387718886137, -0.012751433998346329, 0.0021029941271990538, -6.523730462504318e-06, -0.014784270897507668, 0.01858985237777233, 0.009308614768087864, 0.02180679887533188, -0.0017068645684048533, 0.029020976275205612, 0.01568775437772274, -0.006043754983693361, -0.018904702737927437, -0.012060131877660751, -0.02321678027510643, 0.0024229777045547962, 0.015482417307794094, -0.021327679976820946, 0.004065674729645252, -0.014455731958150864, 0.019192174077033997, 0.022696593776345253, -0.002633448224514723, -0.014250394888222218, 0.0037405574694275856, -0.007693296764045954, 0.0031690357718616724, -0.010164186358451843, 0.0166733730584383, -0.012902013957500458, 0.008179261349141598, 0.01860354095697403, -0.008808961138129234, 0.008719981648027897, 0.007022528909146786, -0.006909593474119902, 0.001339824520982802, -0.012108043767511845, 0.003613932989537716, -0.005417476873844862, -0.007912322878837585, 0.0006711956229992211, 0.0021953957621008158, -0.010520104318857193, 0.01441466435790062, -0.007891789078712463, -0.0050512924790382385, -0.012682988308370113, 0.016728129237890244, -0.016221631318330765, 0.010677528567612171, 0.006854836829006672, 0.03778202459216118, -0.02229960821568966, 0.015222323127090931, 0.016426967456936836, -0.02825438417494297, 0.00417176540941, -0.0014638823922723532, 0.005372987128794193, 0.006830880884081125, -0.0020037477370351553, 0.017439963296055794, 0.006396250333636999, -0.029924459755420685, 0.011868484318256378, -0.00024276833573821932, 0.0004804032505489886, 0.004715908784419298, 0.00778912054374814, 0.012607697397470474, -0.019000526517629623, -0.0021765732672065496, -0.010581704787909985, -0.023394739255309105, -0.005520145408809185, 0.02015041373670101, -0.012470806017518044, -0.011423586867749691, 0.013969766907393932, 0.002784028882160783, -0.010917088948190212, -0.03611195087432861, -0.006557098124176264, -0.004674841184169054, 0.00812450423836708, -0.007932856678962708, 0.024476181715726852, -0.003716601524502039, 0.0023237315472215414, 0.0014501932309940457, -0.01875412091612816, 0.009418128058314323, -0.003569443244487047, -0.0045892843045294285, -0.001398003427311778, -0.006064288783818483, -0.002079038182273507, -0.011170337907969952, -0.0064886524342000484, 0.004904134199023247, 0.0034222849644720554, -0.012840413488447666, 0.0025205127894878387, -0.009794579818844795, 0.009643998928368092, -0.006892481818795204, -0.013210020028054714, -0.003969850484281778, -0.008008146658539772, -0.0062080249190330505, 0.00537983188405633, 0.0008803827804513276, -0.006481807678937912, 0.009527641348540783, 0.005852107424288988, 0.009021143428981304, 0.0038226922042667866, 0.005653614643961191, -0.009698755107820034, 0.018288690596818924, -0.0034958641044795513, 0.008001302368938923, 0.0004945201799273491, 0.0013749030185863376, -0.00016245158622041345, 0.0006083111511543393, 0.011375674977898598, 0.00833668652921915, -0.02513326145708561, 0.01887732371687889, -0.008932163938879967, 0.016769196838140488, 0.0073647573590278625, 0.01838451437652111, 0.037891536951065063, 0.006676877848803997, -0.00677954638376832, -0.0015135054709389806, 0.015728821977972984, 0.019794495776295662, -0.01383971981704235, 0.01533183641731739, -0.0014014256885275245, -0.021136032417416573, -0.00653314171358943, -0.0065913209691643715, 0.023600077256560326, 0.004233366344124079, -0.010191564448177814, 0.018083354458212852, -0.009459195658564568, -0.006666610948741436, -0.00958924274891615, 0.002979099052026868, -0.011129270307719707, -0.012340759858489037, 0.010465347208082676, -0.0030424112919718027, -0.01972605101764202, 0.003372661769390106, -0.014072435908019543, 0.011437276378273964, -0.02443511411547661, -0.0202325489372015, 0.005872640758752823, 0.001964391442015767, -0.00486306706443429, 0.02343580685555935, 0.003102301387116313, -0.04202565923333168, -0.020191481336951256, 0.0021628839895129204, -0.013292154297232628, -0.012970459647476673, -0.005164227914065123, 0.013860253617167473, 0.01930168643593788, -0.002280952874571085, 0.007905478589236736, -0.006108778528869152, 0.004192299209535122, -0.0002861885877791792, 0.0023357095196843147, 0.010561170987784863, -0.00249484577216208, 0.007693296764045954, -0.004421592224389315, -0.006396250333636999, 0.014688447117805481, 0.0035146865993738174, -0.010348989628255367, 0.005414054729044437, -0.015496105886995792, -0.013442735187709332, -0.0007747197523713112, -0.024175019934773445, -0.027775265276432037, -0.03271704539656639, -0.005475656129419804, -0.012505029328167439, -0.0028815639670938253, 0.02164253033697605, 0.013216864317655563, 0.014578933827579021, 0.0062901596538722515, 0.004787776619195938, -0.007193643134087324, -0.013476958498358727, -0.007693296764045954, 0.005653614643961191, -0.012429739348590374, 0.001368058379739523, -9.665281140769366e-06, -0.01344957947731018, 0.020889626815915108, 0.002094438299536705, 0.008014990948140621, -0.024530937895178795, -0.0006365450099110603, -0.0012525563361123204, 0.0177411250770092, -0.005530412308871746, 0.003706334624439478, 0.004979424644261599, 0.010157342068850994, -0.01931537687778473, 0.01305943913757801, -0.00418887659907341, -0.006077977828681469, 0.011211405508220196, 0.009205946698784828, 0.013141574338078499, 0.013579626567661762, -0.006820613984018564, -0.011841106228530407, -0.004182032309472561, 0.011403053067624569, -0.0026248926296830177, -0.016084739938378334, -0.01342220138758421, -0.033483635634183884, 0.009041677229106426, 0.013887632638216019, -0.005783661734312773, -0.006871948018670082, 0.0019147683633491397, 0.0027172942645847797, 0.0027720509096980095, 0.020780114457011223, 0.004801465664058924, 0.029623297974467278, -0.0024246887769550085, -0.02618732489645481, -0.015112809836864471, 0.009329148568212986, -0.009137501008808613, 0.01192324049770832, -0.0011729882098734379, 0.007268933113664389, 0.01704297959804535, 0.0006656344048678875, 0.010561170987784863, -0.015728821977972984, 0.005297697149217129, 0.010417435318231583, -0.027706818655133247, -0.005807617679238319, -0.008076592348515987, -0.01655017025768757, -0.00695408321917057, 0.018713053315877914, -0.026584308594465256, -0.005205295514315367, -0.008959542028605938, 0.010745974257588387, 0.004715908784419298, 0.01405874639749527, -0.005393520928919315, -0.020602155476808548, -0.004798043519258499, 0.0015229168348014355, 0.01583833433687687, 9.694691834738478e-05, -0.012333914637565613, 0.015058053657412529, 0.012908859178423882, 0.005102626979351044, 0.018658297136425972, 0.004264167044311762, 0.004900712054222822, -0.023654833436012268, 0.016413278877735138, 0.008925318717956543, -0.0028182517271488905, 0.0073442235589027405, -0.025146950036287308, 0.004387369379401207, 0.010266854427754879, 0.023723280057311058, 0.008966386318206787, 0.011492032557725906, -0.013360599987208843, -0.0031827250495553017, 0.005403787828981876, 0.007440047338604927, -0.022025825455784798, -0.009746667928993702, -0.03222423419356346, 0.001842900412157178, 0.01228600274771452, -0.005893174558877945, -0.011820572428405285, -0.006225136108696461, -0.010376367717981339, -0.0030218774918466806, 0.005403787828981876, 0.010677528567612171, 0.014223015867173672, -0.032251615077257156, 0.003008188446983695, -0.019507024437189102, -0.018726743757724762, 0.02847341075539589, -0.006495496723800898, 0.01717987097799778, -0.0037200236693024635, 0.011225095018744469, -0.0014193926472216845, 0.00901429820805788, -0.00607113353908062, -0.01416825968772173, -0.009103277698159218, 0.0023973106872290373, 0.023326294496655464, -0.0011627213098108768, -0.01745365373790264, -3.047972541025956e-06, 0.01164261344820261, -0.012114888988435268, 0.03742610663175583, -0.018904702737927437, 0.005602280609309673, 0.0027053162921220064, 0.02257339097559452, -0.04657045379281044, -0.01831606961786747, -0.002075615804642439, -0.002597514307126403, 0.008521489799022675, -0.0046714190393686295, -0.0024229777045547962, -0.017125112935900688, 0.00320325861684978, -0.0019062126521021128, -0.01227915845811367, 0.011101892217993736, 0.004229944199323654, -0.03279918059706688, -0.033182475715875626, -0.006782968528568745, -0.005044448189437389, 0.007289466913789511, -0.028199627995491028, 0.006981461308896542, 0.013873943127691746, -0.016700750216841698, -0.006077977828681469, 0.014099813997745514, 0.021533016115427017, 0.020328372716903687, -0.00765222916379571, 0.008808961138129234, 0.01816548779606819, 0.01653648167848587, 0.015537173487246037, -0.019862942397594452, 0.015605619177222252, -0.005085515324026346, 0.007665918208658695, -0.020205169916152954, 0.0010027295211330056, -0.03249801695346832, -0.0032323480118066072, 0.00947972945868969, -0.0030475447420030832, 0.0033487058244645596, 0.0016529635759070516, -0.0050307586789131165, -0.002390465931966901, 0.010588550008833408, -0.0009984516073018312, -0.007898633368313313, 0.012183334678411484, 0.013784963637590408, -0.015523484908044338, 0.006129312328994274, -0.013921855017542839, 0.019438577815890312, 0.0013569359434768558, -0.00113619863986969, -0.00720733217895031, 0.005427743773907423, -0.002373354509472847, 0.012005375698208809, 0.009130655787885189, 0.011841106228530407, -0.013244242407381535, -0.008247707039117813, -0.0362214632332325, -0.002736116759479046, 0.005420899484306574, 0.0029038088396191597, 0.018685676157474518, 0.021902624517679214, -0.005828151013702154, -0.008316152729094028, 0.011704214848577976, 0.008500955998897552, 0.015879401937127113, 0.006577631458640099, -0.006926704663783312, -0.011813727207481861, 0.01887732371687889, -0.0043805246241390705, 0.002792584476992488, -0.009021143428981304, 0.015810957178473473, -0.00824086181819439, 0.012785656377673149, 0.005838417913764715, 0.004479771014302969, 0.012073821388185024, -0.004897289909422398, -0.021108653396368027, 0.01717987097799778, -0.014880094677209854, -0.009055365808308125, 0.009445506148040295, -0.0067658573389053345, 0.018480338156223297, -0.002316886791959405, -0.0040211849845945835, 0.0004143103724345565, 0.008548867888748646, -0.012874635867774487, -0.02329891547560692, 0.003641311079263687, 0.002517090644687414, 0.0041135866194963455, 0.017987528815865517, 0.016865020617842674, -0.0015485839685425162, -0.006201180163770914, 0.007515337783843279, -7.181450928328559e-05, -0.010704907588660717, 0.02050633169710636, 0.012333914637565613, -0.033620528876781464, 0.008316152729094028, -0.020123034715652466, -0.015660375356674194, -0.006632388103753328, -0.006560520268976688, -0.008569401688873768, 0.021382436156272888, 0.0021799954120069742, 0.006646077148616314, 0.021779421716928482, -0.017234627157449722, 0.024010751396417618, -0.012744588777422905, 0.0030030549969524145, 0.0014176815748214722, 0.017275694757699966, 0.008815806359052658, -0.013921855017542839, -0.007679607253521681, 0.032552774995565414, 0.0004359135346021503, 0.00024319611839018762, 0.02058846689760685, -0.01416825968772173, -0.02242281101644039, 0.011587856337428093, -0.014606311917304993, 0.01995876617729664, -0.0073647573590278625, 0.008021836169064045, 0.0022501524072140455, -0.015427660197019577, 0.004342879634350538, -0.013730207458138466, 0.012368137948215008, 0.009199101477861404, -0.005954775959253311, -0.012190178968012333, 0.02535228617489338, -0.028637681156396866, -0.0012713788310065866, -0.012224401347339153, -0.04648831859230995, -0.008555712178349495, -0.01967129297554493, 0.006184068974107504, -0.006190913263708353, -0.00608824472874403, 0.01405874639749527, 0.008056058548390865, -0.012320226058363914, 0.003583132289350033, -0.003891137894243002, 0.0023870437871664762, -0.025037435814738274, -0.003942472394555807, 0.017344139516353607, 0.02676226757466793, 0.0038706043269485235, -0.00404514092952013, 0.012197023257613182, -0.00411700876429677, -0.022751349955797195, -0.006413361988961697, -0.0011105315061286092, 0.014154570177197456, -0.014674757607281208, 0.001275656744837761, 0.009678222239017487, -0.0003920655290130526, 9.630523709347472e-05, 0.009240169078111649, 0.009007453918457031, -0.0036173551343381405, 0.012238090857863426, -0.019684983417391777, 0.00325801526196301, -0.0055167232640087605, -0.007754897698760033, 0.021313991397619247, -0.012566630728542805, 0.00045045826118439436, 0.013093662448227406, -0.012751433998346329, 0.0015049497596919537, -0.010164186358451843, 0.004596128594130278, 0.016865020617842674, -0.01054063718765974, 0.004168343264609575, 0.004746709018945694, -0.002683071419596672, -0.0170292891561985, -0.016385899856686592, -0.024051818996667862, 0.003456507809460163, -0.014181949198246002, -0.0007687307661399245, -0.0030526781920343637, 0.0052360957488417625, -0.0023220202419906855, -0.007474270183593035, -0.02179311029613018, -0.008405132219195366, -0.012443427927792072, -0.029979215934872627, -0.0014655935810878873, 0.01249818503856659, -0.011170337907969952, 0.008555712178349495, -0.02221747301518917, -0.0019609692972153425, -0.012977304868400097, 0.007111507933586836, 0.006622121203690767, 0.0027703396044671535, -0.0013552248710766435, -0.027378279715776443, -0.01626269891858101, -0.004982846789062023, -0.0021440614946186543, 0.00537983188405633, 0.00449003791436553, -0.010054673068225384, -0.015140188857913017, 0.00947972945868969, 0.01203275378793478, 0.01377811934798956, -0.010636461898684502, -0.0073647573590278625, 0.03534536063671112, -0.010951312258839607, 0.023613765835762024, -0.005294275004416704, -0.003593399189412594, -0.018288690596818924, 0.016878709197044373, 0.014907472766935825, 0.008014990948140621, -0.0020174370147287846, 0.019137417897582054, -0.008637847378849983, 0.018781499937176704, 0.007967079058289528, 0.022121649235486984, -0.0007246688473969698, 0.010321611538529396, -0.006536564324051142, -0.003836381481960416, 0.0061053563840687275, -0.011088203638792038, -0.0009282947867177427, -0.010834953747689724, -0.013572782278060913, 0.010923933237791061, -0.010684373788535595, 0.012929392047226429, -0.004818577319383621, -0.022532323375344276, 2.3528209567302838e-05, -0.04303865507245064, -0.0020602154545485973, 0.01316895242780447, 0.004821999464184046, -0.028309140354394913, -0.025790339335799217, 0.01590678095817566, -0.015181255526840687, -0.010971845127642155, -0.017426274716854095, 0.020068278536200523, 0.0008615602273494005, -0.027802642434835434, 0.01811073161661625, 0.004082785919308662, 0.008158727549016476, 0.01570144295692444, -0.03159453347325325, 0.004661152139306068, -0.00032746989745646715, -0.033757418394088745, 0.0025393355172127485, 0.006293581798672676, -0.009178568609058857, 0.007323689758777618, 0.005314808338880539, 0.0029671210795640945, -0.015810957178473473, -0.001443348708562553, 0.02264183759689331, -0.01768636889755726, -0.024325601756572723, 0.01252556312829256, 0.00851464457809925, -0.011382519267499447, 0.015290768817067146, 0.022107960656285286, -0.00298081012442708, 0.0037234460469335318, -0.00018063247262034565, 0.004637196194380522, 0.011088203638792038, -0.0018651452846825123, -0.015728821977972984, -0.00028469134122133255, 0.01570144295692444, -0.014592623338103294, -0.006471540778875351, 0.01138936448842287, 0.008850028738379478, 0.0026214702520519495, -0.009910937398672104, -0.0069609275087714195, -0.009856180287897587, 0.018562473356723785, -0.0002893969649448991, 0.007973924279212952, 0.009034832008183002, 0.011574167758226395, 0.000977917923592031, 0.017481030896306038, 0.013695984147489071, 0.02967805415391922, 0.0013124463148415089, 0.011409898288547993, 0.005639925599098206, -0.03356577083468437, -0.01214226707816124, -0.011279851198196411, 0.005520145408809185, 3.0880775739206e-05, 0.006375716999173164, 0.02264183759689331, 0.01150572206825018, -0.011724748648703098, -0.0062080249190330505, 0.004674841184169054, 0.030691051855683327, -0.021683597937226295, -0.011163493618369102, 0.015359214507043362, 0.022176407277584076, 0.008952697739005089, -0.016221631318330765, 0.008302463218569756, 0.001127642928622663, -0.00073621905175969, -0.022107960656285286, -0.04273749515414238, 0.0003948461380787194, -0.010431124828755856, -0.0012072110548615456, 0.0028045624494552612, 0.006190913263708353, -0.043339814990758896, -0.021779421716928482, 0.0045653278939425945, -0.02620101347565651, 0.01104029081761837, 0.013990300707519054, -0.01704297959804535, -0.0008337541949003935, -0.003201547544449568, -0.00537983188405633, 0.00016598081856500357, 0.0060950894840061665, -0.018069664016366005, 0.015003297477960587, -0.0007041351054795086, -0.03080056421458721, -0.027364591136574745, 0.003158769104629755, 0.0014758603647351265, -0.01875412091612816, 0.03824745491147041, -0.004089630674570799, -0.004904134199023247, 0.00519845075905323, -0.004339457489550114, -0.001880545518361032, -0.02684440277516842, 0.026858091354370117, -0.020123034715652466, 0.010739129967987537, -0.01860354095697403, 0.008165571838617325, 0.012662454508244991, 0.001491260714828968, -0.009705600328743458, 0.014907472766935825, -0.0073442235589027405, -0.02521539479494095, -0.0024794454220682383, -0.0170292891561985, -0.0184666495770216, -0.007330534514039755, -0.008035524748265743, -0.02108127437531948, -0.01965760439634323, -0.016358522698283195, -0.005773394834250212, 0.0008435932104475796, -1.3268037946545519e-05, -0.0018925236072391272, 0.008719981648027897, 0.002039681887254119, 0.020478952676057816, -0.001274801092222333, -0.014455731958150864, 0.0034342629369348288, -0.005708371289074421, 0.019055282697081566, -0.002191973617300391, -0.025160638615489006, -0.01633114367723465, 0.00940443854779005, -0.0011028313310816884, -0.023955995216965675, -0.0008260540198534727, 0.000623283616732806, -0.03299082815647125, 0.016290076076984406, 0.035044196993112564, -0.006163535173982382, -0.010383212938904762, -0.005992420949041843, 0.011081358417868614, 0.004459237214177847, 0.004606395494192839, 0.01192324049770832, -0.011546789668500423, -0.018302379176020622, 0.006057444494217634, -0.011512566357851028, -0.0016144629335030913, -0.014250394888222218, -0.00809712614864111, 0.0025547356344759464, -0.015140188857913017, 0.0024726008996367455, 0.012662454508244991, 0.01192324049770832, -0.017481030896306038, -0.010828109458088875, 0.006201180163770914, -0.03487992659211159, -0.016016293317079544, 0.025653447955846786, 0.0023870437871664762, 0.007583783473819494, 0.016933465376496315, -0.012758278287947178, 0.0012371559860184789, -0.0369059219956398, -0.013456424698233604, 0.04323030263185501, 0.013990300707519054, 0.03159453347325325, -0.021916313096880913, -0.01745365373790264, 0.013737051747739315, -0.017412586137652397, 0.01811073161661625, -0.001536605879664421, -0.014181949198246002, 0.006625543814152479, 0.034113336354494095, 0.008918474428355694, 0.004996535833925009, -0.008138193748891354, -0.008521489799022675, -0.005557790864259005, 0.003819270059466362, 0.02811749279499054, 0.009048521518707275, -0.004236788954585791, 0.023531630635261536, -0.0015597064048051834, 0.01824762299656868, -0.0063722943887114525, 0.015523484908044338, 0.004993113689124584, -0.0009941738098859787, 0.00016918921028263867, 0.010841798968613148, 0.013860253617167473, -0.00037388462806120515, -0.0024383780546486378, 0.0028935419395565987, 0.008637847378849983, -0.004425014369189739, 2.489845883246744e-06, 0.014031368307769299, -0.016290076076984406, -0.01064330618828535, -0.03230636939406395, -0.0022039515897631645, -0.00986302550882101, 0.01972605101764202, 0.0030988790094852448, -0.002291219774633646, 0.008459888398647308, -0.007296311669051647, 0.0002690771652851254, 0.011984841898083687, 0.009240169078111649, 0.010355833917856216, -0.00778912054374814, 0.0027326946146786213, 0.009732978418469429, 0.00823401752859354, -0.006526297423988581, -0.004678263328969479, -0.0029174978844821453, 0.007132041733711958, -0.004893867298960686, -0.006830880884081125, 0.005304541438817978, 0.008932163938879967, -0.02392861619591713, 0.015482417307794094, -0.0007991035236045718, -4.724357495433651e-05, -0.002746383659541607, -0.01356593705713749, 0.008562556467950344, -0.0022296186070889235, 0.004431859124451876, -0.014086124487221241, 0.01611211709678173, 0.02193000167608261, 0.015523484908044338, 0.005554368253797293, 0.015934158116579056, -0.0020978606771677732, -0.01291570346802473, 0.0009471173398196697, 0.0033949066419154406, 0.00809712614864111, 0.019151106476783752, 0.0002506823802832514, -0.005438010673969984, 0.0004245772142894566, 0.011211405508220196, -0.008172416128218174, 0.021259233355522156, 0.018001219257712364, 0.0023716434370726347, 0.00048510890337638557, 0.005865796469151974, 0.007077285088598728, 0.005277163349092007, 0.011464654467999935, 0.0003437257546465844, 0.008829494938254356, 0.0024726008996367455, -0.013333221897482872, -0.0009762067929841578, -0.002375065814703703, 0.01494854036718607, -0.006978039164096117, 0.025598691776394844, 0.006687144748866558, 0.01853509433567524, 0.007056751754134893, 0.009630309417843819, 0.005605702754110098, 0.008309307508170605, 0.016454346477985382, 0.0012961904285475612, 0.0005971887148916721, -0.011957463808357716, -0.0075290268287062645, 0.024818411096930504, 0.018836256116628647, -0.03802843019366264, -0.009185412898659706, 0.02094438299536705, -0.02691284939646721, -0.005075248423963785, 0.011957463808357716, 0.0034017511643469334, -0.000661356549244374, 0.0018565895734354854, 5.6253807997563854e-05, -0.013196330517530441, -0.017919084057211876, -3.791250128415413e-05, -0.020930694416165352, 0.003733712946996093, 0.007234710268676281, -0.0223543643951416, -0.002898675389587879, -0.00962346512824297, 0.02194369025528431, -0.007392135448753834, -0.003204969922080636, 0.0008145038154907525, 0.00436341343447566, -0.01139620877802372, -0.008891096338629723, -0.009883559308946133, 0.003343572374433279, 0.02747410349547863, 0.0031724581494927406, -0.0025205127894878387, -0.007008839398622513, -0.016221631318330765, -0.011519410647451878, 0.013593316078186035, -0.002262130379676819, 0.01381234172731638, 0.0177411250770092, -0.01366176176816225, 0.0009436950786039233, 0.01327162142843008, -0.0016777751734480262, 0.01281303446739912, 0.0040930528193712234, 0.005992420949041843, 0.017289383336901665, -0.0024332446046173573, 0.0004525971889961511, -0.006502341479063034, -0.001582806813530624, -0.03145764395594597, 0.010745974257588387, 0.0049383570440113544, 0.013360599987208843, 8.448765584034845e-05, -0.020465264096856117, 0.005523568019270897, -0.0005856385105289519, 0.003109145909547806, 0.0014681601896882057, 0.0053421868942677975, 0.00665292190387845, 0.027939533814787865, -0.01689239777624607, 0.02618732489645481, -0.009541330859065056, -0.022121649235486984, 0.02803535759449005, 0.025434421375393867, -0.009732978418469429, -0.00863100215792656, -0.028172248974442482, 0.004264167044311762, 0.0004598695377353579, -0.004349723923951387, 0.00873367115855217, 0.013470113277435303, 0.016495414078235626, 0.025256462395191193, 0.024298222735524178, -0.001947280135937035, -0.003661844879388809, -0.007015684153884649, -0.02001352235674858], 'id': '431f567d-c1c0-4489-84e7-2a3f84e6bc8d', '_distance': 1.0834708213806152})]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# sample of retrieved_documents\n", + "print(retrieved_documents[0].page_content)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "C3InbcrAjyWE", + "outputId": "0e277a08-619c-4a18-b0f3-e500eb695b41" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "35 \n", + "Reportable Segments \n", + "Fiscal Year 2022 Compared with Fiscal Year 2021 \n", + "Productivity and Business Processes \n", + "Revenue increased $9.4 billion or 18%. \n", + "• Office Commercial products and cloud services revenue increased $4.4 billion or 13%. Office 365 \n", + "Commercial revenue grew 18% driven by seat growth of 14%, with continued momentum in small and \n", + "medium business and frontline worker offerings, as well as growth in revenue per user. Office Commercial \n", + "products revenue declined 22% driven by continued customer shift to cloud offerings. \n", + "• Office Consumer products and cloud services revenue increased $641 million or 11% driven by Microsoft 365 \n", + "Consumer subscription revenue. Microsoft 365 Consumer subscribers grew 15% to 59.7 million. \n", + "• LinkedIn revenue increased $3.5 billion or 34% driven by a strong job market in our Talent Solutions business \n", + "and advertising demand in our Marketing Solutions business. \n", + "• Dynamics products and cloud services revenue increased 25% driven by Dynamics 365 growth of 39%. \n", + "Operating income increased $5.3 billion or 22%. \n", + "• Gross margin increased $7.3 billion or 17% driven by growth in Office 365 Commercial and LinkedIn. Gross \n", + "margin percentage was relatively unchanged. Excluding the impact of the change in accounting estimate, \n", + "gross margin percentage increased 2 points driven by improvement across all cloud services. \n", + "• Operating expenses increased $2.0 billion or 11% driven by investments in LinkedIn and cloud engineering. \n", + "Gross margin and operating income both included an unfavorable foreign currency impact of 2%. \n", + "Intelligent Cloud \n", + "Revenue increased $15.2 billion or 25%. \n", + "• Server products and cloud services revenue increased $14.7 billion or 28% driven by Azure and other cloud \n", + "services. Azure and other cloud services revenue grew 45% driven by growth in our consumption -based \n", + "services. Server products revenue increased 5% driven by hybrid solutions, including Windows Server and \n", + "SQL Server running in multi -cloud environments. \n", + "• Enterprise Services revenue increased $464 million or 7% driven by growth in Enterprise Support Services. \n", + "Operating income increased $6.6 billion or 25%. \n", + "• Gross margin increased $9.4 billion or 22% driven by growth in Azure and other cloud services. Gross margin \n", + "percentage decreased. Excluding the impact of the change in accounting estimate, gross margin percentage \n", + "was relatively unchanged driven by improvement in Azure and other cloud services, offset in part by sales \n", + "mix shift to Azure and other cloud services. \n", + "• Operating expenses increased $2.8 billion or 16% driven by investments in Azure and other cloud services. \n", + "Revenue and operating income included an unfavorable foreign currency impact of 2% and 3%, respectively. \n", + "More Personal Computing \n", + "Revenue increased $5.6 billion or 10%. \n", + "• Windows revenue increased $2.3 billion or 10% driven by growth in Windows OEM and Windows \n", + "Commercial. Windows OEM revenue increased 11% driven by continued strength in the commercial PC \n", + "market, which has higher revenue per license. Windows Commercial products and cloud services revenue \n", + "increased 11% driven by demand for Microsoft 365.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#Reranker model" + ], + "metadata": { + "id": "slsNEwLV-NWS" + } + }, + { + "cell_type": "markdown", + "source": [ + "we are using landb for colbertv2 implementation\n", + "COlbertv2 is reranker method helpful for improving the ranking of results its returning top ranking\n", + "results as the most relevant to your particular query.\n", + "\n", + "for more technical details please check the blog :" + ], + "metadata": { + "id": "nRDEYibze8xA" + } + }, + { + "cell_type": "code", + "source": [ + "db = lancedb.connect(\"/tmp/db\")\n", + "registry = EmbeddingFunctionRegistry.get_instance()\n", + "func = registry.get(\"openai\").create()\n", + "\n", + "\n", + "class Words(LanceModel):\n", + " text: str = func.SourceField()\n", + " vector: Vector(func.ndims()) = func.VectorField()\n", + "\n", + "\n", + "table = db.create_table(\"wordsllm\", schema=Words, mode=\"overwrite\")\n", + "\n", + "# data from retriver\n", + "formatted_data = [{\"text\": doc.page_content} for doc in retrieved_documents]\n", + "\n", + "\n", + "# ingest docs with auto-vectorization\n", + "table.add(formatted_data)\n", + "# Create the FTS index on the 'text' field\n", + "table.create_fts_index([\"text\"], replace=True)\n", + "\n", + "\n", + "# normal search\n", + "query = \"technologies and business models\"\n", + "actual = table.search(query).limit(1).to_pydantic(Words)[0]\n", + "print(actual.text)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ZHjbtdCpkB-r", + "outputId": "a33b3216-7764-4fc7-8f43-66371c954dc6" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "82 \n", + "In addition, certain costs incurred at a corporate level that are identifiable and that benefit our segments are allocated to \n", + "them. These allocated costs include legal, including settlements and fines, information technology, human resources, \n", + "finance, excise taxes, field selling, shared facilities services, and customer service and support. Each allocation is \n", + "measured differently based on the specific facts and circumstances of the costs being allocated. \n", + "Segment revenue and operating income were as follows during the periods presented: \n", + " \n", + "(In millions) \n", + " \n", + "Year Ended June 30, 2022 2021 2020 \n", + " \n", + "Revenue \n", + " \n", + "Productivity and Business Processes $ 63,364 $ 53,915 $ 46,398 \n", + "Intelligent Cloud 75,251 60,080 48,366 \n", + "More Personal Computing 59,655 54,093 48,251 \n", + "Total $ 198,270 $ 168,088 $ 143,015 \n", + " \n", + "Operating Income \n", + " \n", + "Productivity and Business Processes $ 29,687 $ 24,351 $ 18,724 \n", + "Intelligent Cloud 32,721 26,126 18,324 \n", + "More Personal Computing 20,975 19,439 15,911 \n", + "Total $ 83,383 $ 69,916 $ 52,959 \n", + "No sales to an individual customer or country other than the United States accounted for more than 10% of revenue for \n", + "fiscal years 2022, 2021, or 2020. Revenue, classified by the major geographic areas in which our customers were located, \n", + "was as follows: \n", + " \n", + "(In millions) \n", + " \n", + "Year Ended June 30, 2022 2021 2020 \n", + " \n", + "United States (a) $ 100,218 $ 83,953 $ 73,160 \n", + "Other countries 98,052 84,135 69,855 \n", + "Total $ 198,270 $ 168,088 $ 143,015 \n", + "(a) Includes billings to OEMs and certain multinational organizations because of the nature of these businesses and the \n", + "impracticability of determining the geographic source of the revenue. \n", + "Revenue, classified by significant product and service offerings, was as follows: \n", + " \n", + "(In millions) \n", + " \n", + "Year Ended June 30, 2022 2021 2020 \n", + " \n", + "Server products and cloud services $ 67,321 $ 52,589 $ 41,379 \n", + "Office products and cloud services 44,862 39,872 35,316 \n", + "Windows 24,761 22,488 21,510 \n", + "Gaming 16,230 15,370 11,575 \n", + "LinkedIn 13,816 10,289 8,077 \n", + "Search and news advertising 11,591 9,267 8,524 \n", + "Enterprise Services 7,407 6,943 6,409 \n", + "Devices 6,991 6,791 6,457 \n", + "Other 5,291 4,479 3,768 \n", + "Total $ 198,270 $ 168,088 $ 143,015 \n", + "We have recast certain previously reported amounts in the table above to conform to the way we internally manage and \n", + "monitor our business.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#Colbertv2 reranker model" + ], + "metadata": { + "id": "DWriE9uWMgPb" + } + }, + { + "cell_type": "code", + "source": [ + "from lancedb.rerankers import ColbertReranker\n", + "\n", + "reranker_colbert = ColbertReranker()\n", + "results_colbert = (\n", + " table.search(\"technologies and business models\", query_type=\"hybrid\")\n", + " .rerank(reranker=reranker_colbert)\n", + " .to_pandas()\n", + ")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 368, + "referenced_widgets": [ + "512a4a1ac0a54087b19b3ab709d408a5", + "e4fffd410f144690a30509cd6ebfe3d0", + "e1d7a067149048cdb0c96c7b8fc49d3a", + "6cf906c96d934cef8bd3236d011335c3", + "9ccc93963e214e8ebbcec70fc8380004", + "5c103a7e49654f9fa544614faa53266d", + "094b771f8f664daba18dce94377a3b82", + "8904ec0f7c5e4c84ab091ec0b41c21f7", + "43340646831643f588fc7242cb77e335", + "9e35f34b4314464b88ae8d056a9ff0c9", + "ce328d74dd624c86bfb3564ced691433", + "f6e58bbf74fa4f72847eefbfdb88f5a5", + "cb16b243e4ed44cbaa44aae6dff804df", + "3da764b62956470bbe525b0f211d1aba", + "6b6d018ac1464f718de54d590a05d812", + "44cfb577ac064a5791edb3f985e4319e", + "626fbd41136f4695ad87b950940eee2a", + "7ee096ddd2e0430a90cd70d9038bbed8", + "ad12c139c01645588babd5847828338f", + "f9235562c819445c9dd8dbd470339686", + "d0c9b80dbda54445a9d11db9d78483b9", + "24b143e06316458eb749bf5205a6b50b", + "6dbe42d65d32487db6384bad62f61ea0", + "b09df7fdc4d848c68445f097eabb26ff", + "d71d780bb8fb426998037943f21a57e7", + "d8dea6d0dc4248bc901541fa430aad4f", + "29a9346c94aa404ea618e57e47109880", + "d66c89fc9dfb4826b3cb4dfda31cf007", + "eb07c72549434e3bbac0c78daf97341f", + "e8a29343ae5a49d4b71c0cee39903eba", + "71457dc5c8ea4b69b0118a3972fc7f5f", + "8aa6071ab59b4e1b867d6538261decc9", + "34f4a5a1851a4268a0ab749c967066d9", + "edc4db29c82744b1929358793c22cecb", + "22a7472d547a48d684e208aa80a48daa", + "98185bbf7b794e3189ca9868a0a8c548", + "79ecc557cfba4409876c543ad9fd4d1d", + "d51840e06afa471ca5d09e63d02d7af5", + "5323184c79864acfb798ee3d0903e5e3", + "c17a522cbf9341d796fa7cacacded1cd", + "0d67cc434d514e7fbb844462fe613936", + "dc06c0ec5c7e40d98a8008d03b162a40", + "ad17228a04184934a4fd107307c59c9c", + "bf1598b78a01422c99a77b0c00704f24", + "240ed6a8d0df400d9b5b8a86dbb89d03", + "1cc8951a55584143a4f24b11d4221d0b", + "f52c290c9f5d4c7d830578bd139ab4a9", + "0ec0c7c3998d41e6890903c713f518bc", + "6b3936ecd33a41f2a61c368c86498865", + "93bd0eca9ace4bf4a10bd0467223ed90", + "ac8d646d12e6417ca32eb45e478a9cfe", + "ba1f368d05fd40578d7bca97269fffab", + "9a5d372096cb4f759778026b9b57b376", + "81d022b3239647509d245b7ab890badb", + "832bc71baafb44118b338d3f124b9927", + "9fa2d08290ea419a8455e06ea92db3e8", + "ce808eccce44475a9628cf45c7cf7e56", + "67ca36dd2e844fa6bb17ab776cb25b1f", + "f586fe78b39244d097f774a380f976fc", + "e668274af14544148104c94f1a1cfc6a", + "6588d853f27c4cc795e41e146eab356f", + "3a1134aa7e19470bbac3d88c0ad63c0c", + "e5bd14e45ee04cfaaa0028f2b3f03341", + "3302a4bb82ff4d5989c01c0acfae4997", + "f13df4048fc04e3394cab184b2fbadb0", + "df6656e2d170478ca0078d65677871f8" + ] + }, + "id": "-JCKr0_n6jjb", + "outputId": "dc215c45-5d2c-4014-a5c6-b8bfc1076fea" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/content/lancedb/python/lancedb/rerankers/colbert.py:40: FutureWarning: promote has been superseded by promote_options='default'.\n", + " combined_results = self.merge_results(vector_results, fts_results)\n", + "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_token.py:88: UserWarning: \n", + "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", + "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", + "You will be able to reuse this secret in all of your notebooks.\n", + "Please note that authentication is recommended but still optional to access public models or datasets.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "tokenizer_config.json: 0%| | 0.00/405 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
vectortext_relevance_score
0[-0.0043462967, -0.022663297, -0.014687485, -0...35 \\nReportable Segments \\nFiscal Year 2022...0.580270
1[0.0073030023, -0.018824346, 0.001970756, -0.0...82 \\nIn addition, certain costs incurred at ...0.580032
2[-0.0026444048, -0.023148028, -0.008980748, -0...33 Dynamics products and cloud services revenu...0.579247
3[-0.014430126, -0.01449687, 0.0075287614, -0.0...34 net income tax benefit related to an India ...0.526167
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + " \n" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Lets try the CrossEncoder for getting relavant docus from it" + ], + "metadata": { + "id": "64d3D-HyRobi" + } + }, + { + "cell_type": "markdown", + "source": [ + "## cross-encoder reranker model" + ], + "metadata": { + "id": "eJS_IdH5fZUu" + } + }, + { + "cell_type": "markdown", + "source": [ + "Re-ranking is a way to order results and score\n", + "them according to their relevancy to a particular\n", + "query.\n", + "So let's take a look at how this works underneath.\n", + "In re-ranking, after you retrieve results for\n", + "a particular query, you pass these results along with\n", + "your query to a re-ranking model. This allows you to re-rank the output\n", + "so the most relevant results have the highest\n", + "rank. Another way to think about this is\n", + "your re-ranking model scores each of the results conditioned on the\n", + "query, and those with the highest score are the most\n", + "relevant.\n", + "Then you can just select the top ranking\n", + "results as the most relevant to your particular query.\n", + "So let's take a look at how to do this in practice" + ], + "metadata": { + "id": "hn9bxtkQeQBf" + } + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "\n", + "# cross encoder reranker\n", + "from sentence_transformers import CrossEncoder\n", + "\n", + "cross_encoder = CrossEncoder(\"cross-encoder/ms-marco-MiniLM-L-6-v2\")\n", + "\n", + "# Extract text content from Document objects and convert to strings\n", + "document_texts = [doc.page_content for doc in retrieved_documents]\n", + "query_text = (\n", + " \"What were the most important factors that contributed to increases in revenue?\"\n", + ")\n", + "# Create pairs as strings\n", + "pairs = [[query_text, doc_text] for doc_text in document_texts]\n", + "# Predict scores for pairs\n", + "scores = cross_encoder.predict(pairs)\n", + "# Print scores\n", + "print(\"Scores:\")\n", + "for score in scores:\n", + " print(score)\n", + "\n", + "\n", + "print(\"New Ordering:\")\n", + "for o in np.argsort(scores)[::-1]:\n", + " print(o + 1)" + ], + "metadata": { + "id": "Bhg8NKLzk716", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 351, + "referenced_widgets": [ + "9607864fc48046f18b029ee3fc460998", + "a66b8790b1d649dfbe2b8b23810f8b08", + "4830ede53f4e481a844fceed058d3709", + "035029d168a945c6825e95d7e640a649", + "3b84205b280940b7b5910a3a1bc59428", + "f80e6d5c5324449aae87bcb498060ad6", + "e66b07711d8145d0837735c52ac6ae5b", + "fd47bda4836b4c47a6eab7f4adad746c", + "a10be6ba5286402390e7e800df2773c5", + "86ceb09a7cea4cbebdc833b18c06eee1", + "80d0de24b4974c56944acee7dac4cd3c", + "cfa8b359cbe841c590022567b2912936", + "cfbbebe5f3834beba9860b664b14263b", + "607a9a07aead4d1ba536b9a037746307", + "8989a92722094eaa87b78e03a3006ee5", + "4c4724a005d94c948c9df8accc4bd9be", + "f0e02ea03aff47b3b86b31e856f6f979", + "ec1eaf8260da4275a77ee827a3eee933", + "3d98c4e94ef54414a1aabf4b57ca8fad", + "0aadb5b86e344bd482a973ce507fcb9b", + "7ad7b106ae1b4104aea6faaa4451e12b", + "5228d72006e6422ab0fdc39241008622", + "371783f879314d9f97372bc35d73b43a", + "d6a4461d6f004844ac3e939d232d4ea4", + "beb93bd7017649269a9725173bfe095a", + "363f2fe905e24d7db098c85e0e6cac0d", + "49d9663243e94c9485839bbc9c0fdd6d", + "0e14830f5dcf4fb4af8d5a2762cac409", + "b12276a43b47439f8bc21b36a16c83bd", + "907b6225eef84efbadfb53b4f749cfa7", + "9632d557ac41490abee15f80f89d1e8c", + "f9052f766c6644349111e72f9579a09b", + "1e49b79aaa654886b6c06544deb160f0", + "d6ee90511c1843b1b680df60afc66d95", + "61f362cebf6e4f259d7cb1e20b6f1aea", + "06e798bf472645fc807917f7320b7ca0", + "679e1bd10e79449a9240872fccc4d819", + "1cca0d4e0444459da89c234b54f25ff9", + "6d98a47526f6447ea853aa2a17a07414", + "292c462527c54d35b04807262a35bd71", + "2aeb4c955a5748459179106ea10bb1a5", + "c6bd6b236f4e42b997d502dc27b95bba", + "6cdc965edc9648aebd9f3d89cae3955d", + "ea381193a01b4d85a457a70362182454", + "00c97c56f748495db23e999b1daa823b", + "e5766214355249e1a00ca05c9cd72e5f", + "7e2cca6135484b578c9a822d8f14ad0a", + "9b7b7a7a9684476aac925a44e9b391b7", + "fba748349bac44eab84f9e9361ef076d", + "1f68f5e201fd4a86ba134a39bf4a1727", + "a2ffb345d1ea467a92f952dbacf80b27", + "004e0f18fe604aa3974ea4dfd8421b31", + "4cc07587af674134a9e644eb3eb1674f", + "a349191878374a2282ab194818e80d31", + "9f6f8810125e4a12ba9d00274bce61dc" + ] + }, + "outputId": "05e40b97-832b-4ff3-f043-986269ed529e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "config.json: 0%| | 0.00/794 [00:00flashrank) (15.0.1)\n", + "Requirement already satisfied: flatbuffers in /usr/local/lib/python3.10/dist-packages (from onnxruntime->flashrank) (23.5.26)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from onnxruntime->flashrank) (23.2)\n", + "Requirement already satisfied: protobuf in /usr/local/lib/python3.10/dist-packages (from onnxruntime->flashrank) (3.20.3)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from onnxruntime->flashrank) (1.12)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->flashrank) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->flashrank) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->flashrank) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->flashrank) (2024.2.2)\n", + "Requirement already satisfied: huggingface_hub<1.0,>=0.16.4 in /usr/local/lib/python3.10/dist-packages (from tokenizers->flashrank) (0.20.3)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface_hub<1.0,>=0.16.4->tokenizers->flashrank) (3.13.1)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub<1.0,>=0.16.4->tokenizers->flashrank) (2023.6.0)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub<1.0,>=0.16.4->tokenizers->flashrank) (6.0.1)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub<1.0,>=0.16.4->tokenizers->flashrank) (4.9.0)\n", + "Requirement already satisfied: humanfriendly>=9.1 in /usr/local/lib/python3.10/dist-packages (from coloredlogs->onnxruntime->flashrank) (10.0)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->onnxruntime->flashrank) (1.3.0)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Metadata is optional, Id can be your DB ids from your retrieval stage or simple numeric indices.\n", + "from flashrank import Ranker, RerankRequest\n", + "\n", + "# query = \"How to speedup LLMs?\"\n", + "\n", + "query = \"What were the most important factors that contributed to increases in revenue?\"\n", + "\n", + "ranker = Ranker(model_name=\"ms-marco-MiniLM-L-12-v2\", cache_dir=\"/opt\")\n", + "\n", + "rerankrequest = RerankRequest(query=query, passages=formatted_data)\n", + "results = ranker.rerank(rerankrequest)\n", + "print(results)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4NzbLIaRZ9lo", + "outputId": "3a7f2b44-4d28-4976-e7de-2403034f9736" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[{'text': '35 \\nReportable Segments \\nFiscal Year 2022 Compared with Fiscal Year 2021 \\nProductivity and Business Processes \\nRevenue increased $9.4 billion or 18%. \\n• Office Commercial products and cloud services revenue increased $4.4 billion or 13%. Office 365 \\nCommercial revenue grew 18% driven by seat growth of 14%, with continued momentum in small and \\nmedium business and frontline worker offerings, as well as growth in revenue per user. Office Commercial \\nproducts revenue declined 22% driven by continued customer shift to cloud offerings. \\n• Office Consumer products and cloud services revenue increased $641 million or 11% driven by Microsoft 365 \\nConsumer subscription revenue. Microsoft 365 Consumer subscribers grew 15% to 59.7 million. \\n• LinkedIn revenue increased $3.5 billion or 34% driven by a strong job market in our Talent Solutions business \\nand advertising demand in our Marketing Solutions business. \\n• Dynamics products and cloud services revenue increased 25% driven by Dynamics 365 growth of 39%. \\nOperating income increased $5.3 billion or 22%. \\n• Gross margin increased $7.3 billion or 17% driven by growth in Office 365 Commercial and LinkedIn. Gross \\nmargin percentage was relatively unchanged. Excluding the impact of the change in accounting estimate, \\ngross margin percentage increased 2 points driven by improvement across all cloud services. \\n• Operating expenses increased $2.0 billion or 11% driven by investments in LinkedIn and cloud engineering. \\nGross margin and operating income both included an unfavorable foreign currency impact of 2%. \\nIntelligent Cloud \\nRevenue increased $15.2 billion or 25%. \\n• Server products and cloud services revenue increased $14.7 billion or 28% driven by Azure and other cloud \\nservices. Azure and other cloud services revenue grew 45% driven by growth in our consumption -based \\nservices. Server products revenue increased 5% driven by hybrid solutions, including Windows Server and \\nSQL Server running in multi -cloud environments. \\n• Enterprise Services revenue increased $464 million or 7% driven by growth in Enterprise Support Services. \\nOperating income increased $6.6 billion or 25%. \\n• Gross margin increased $9.4 billion or 22% driven by growth in Azure and other cloud services. Gross margin \\npercentage decreased. Excluding the impact of the change in accounting estimate, gross margin percentage \\nwas relatively unchanged driven by improvement in Azure and other cloud services, offset in part by sales \\nmix shift to Azure and other cloud services. \\n• Operating expenses increased $2.8 billion or 16% driven by investments in Azure and other cloud services. \\nRevenue and operating income included an unfavorable foreign currency impact of 2% and 3%, respectively. \\nMore Personal Computing \\nRevenue increased $5.6 billion or 10%. \\n• Windows revenue increased $2.3 billion or 10% driven by growth in Windows OEM and Windows \\nCommercial. Windows OEM revenue increased 11% driven by continued strength in the commercial PC \\nmarket, which has higher revenue per license. Windows Commercial products and cloud services revenue \\nincreased 11% driven by demand for Microsoft 365.', 'score': 0.14885372}, {'text': '34 net income tax benefit related to an India Supreme Court decision on withholding taxes in the third quarter of fiscal year \\n2021. Refer to the Non -GAAP Financial Measures section below for a reconciliation of our financial results reported in \\naccordance with GAAP to non -GAAP financial results. See Note 12 – Income Taxes of the Notes to Financial Statements \\nin our fiscal year 2022 Form 10 -K for further discussion. \\nFiscal Year 2022 Compared with Fiscal Year 2021 \\nRevenue increased $30.2 billion or 18% driven by growth across each of our segments. Intelligent Cloud revenue \\nincreased driven by Azure and other cloud services. Productivity and Business Processes revenue increased driven by \\nOffice 365 Commercial and LinkedIn. More Personal Computing revenue increased driven by Search and news \\nadvertising and Windows. \\nCost of revenue increased $10.4 billion or 20% driven by growth in Microsoft Cloud. \\nGross margin increased $19.8 billion or 17% driven by growth across each of our segments. \\n• Gross margin percentage decreased slightly. Excluding the impact of the fiscal year 2021 change in \\naccounting estimate for the useful lives of our server and network equipment, gross margin percentage \\nincreased 1 point driven by improvement in Productivity and Business Processes. \\n• Microsoft Cloud gross margin percentage decreased slightly to 70%. Excluding the impact of the change in \\naccounting estimate, Microsoft Cloud gross margin percentage increased 3 points driven by improvement \\nacross our cloud services, offset in part by sales mix shift to Azure and other cloud services. \\nOperating expenses increased $6.3 billion or 14% driven by investments in cloud engineering, LinkedIn, Gaming, and \\ncommercial sales. \\nKey changes in operating expenses were: \\n• Research and development expenses increased $3.8 billion or 18% driven by investments in cloud \\nengineering, Gaming, and LinkedIn. \\n• Sales and marketing expenses increased $1.7 billion or 8% driven by investments in commercial sales and \\nLinkedIn. Sales and marketing included a favorable foreign currency impact of 2%. \\n• General and administrative expenses increased $793 million or 16% driven by investments in corporate \\nfunctions. \\nOperating income increased $13.5 billion or 19% driven by growth across each of our segments. \\nCurrent year net income and diluted EPS were positively impacted by the net tax benefit related to the transfer of \\nintangible properties, which resulted in an increase to net income and diluted EPS of $3.3 billion and $0.44, respectively. \\nPrior year net income and diluted EPS were positively impacted by the net tax benefit related to the India Supreme Court \\ndecision on withholding taxes, which resulted in an increase to net income and diluted EPS of $620 million and $0.08, \\nrespectively. \\nGross margin and operating income both included an unfavorable foreign currency impact of 2%. \\nSEGMENT RESULTS OF OPERATIONS \\n \\n(In millions, except percentages) 2022 2021 Percentage \\nChange \\n \\nRevenue \\n \\nProductivity and Business Processes $ 63,364 $ 53,915 18% \\nIntelligent Cloud 75,251 60,080 25% \\nMore Personal Computing 59,655 54,093 10% \\nTotal $ 198,270 $ 168,088 18% \\n \\nOperating Income \\n \\nProductivity and Business Processes $ 29,687 $ 24,351 22% \\nIntelligent Cloud 32,721 26,126 25% \\nMore Personal Computing 20,975 19,439 8% \\nTotal $ 83,383 $ 69,916 19%', 'score': 0.04124021}, {'text': '33 Dynamics products and cloud services revenue growth Revenue from Dynamics products and cloud services, \\nincluding Dynamics 365, comprising a set of intelligent, \\ncloud -based applications across ERP, CRM, Customer \\nInsights, Power Apps, and Power Automate; and on -\\npremises ERP and CRM applications \\n \\nLinkedIn revenue growth Revenue from LinkedIn, including Talent Solutions, \\nMarketing Solutions, Premium Subscriptions, and Sales \\nSolutions \\n \\nServer products and cloud services revenue growth Revenue from Server products and cloud services, \\nincluding Azure and other cloud services; SQL Server, \\nWindows Server, Visual Studio, System Center, and \\nrelated Client Access Licenses (“CALs”); and Nuance and \\nGitHub \\nMore Personal Computing \\nMetrics related to our More Personal Computing segment assess the performance of key lines of business within this \\nsegment. These metrics provide strategic product insights which allow us to assess the performance across our \\ncommercial and consumer businesses. As we have diversity of target audiences and sales motions within the Windows \\nbusiness, we monitor metrics that are reflective of those varying motions. \\n \\nWindows OEM revenue growth Revenue from sales of Windows Pro and non -Pro licenses sold \\nthrough the OEM channel \\n \\nWindows Commercial products and cloud \\nservices revenue growth Revenue from Windows Commercial products and cloud services, \\ncomprising volume licensing of the Windows operating system, \\nWindows cloud services, and other Windows commercial offerings \\n \\nSurface revenue growth Revenue from Surface devices and accessories \\n \\nXbox content and services revenue growth Revenue from Xbox content and services, comprising first - and third -\\nparty content (including games and in -game content), Xbox Game \\nPass and other subscriptions, Xbox Cloud Gaming, third -party disc \\nroyalties, advertising, and other cloud services \\n \\nSearch and news advertising revenue, \\nexcluding TAC, growth Revenue from search and news advertising excluding traffic \\nacquisition costs (“TAC”) paid to Bing Ads network publishers and \\nnews partners \\nSUMMARY RESULTS OF OPERATIONS \\n \\n(In millions, except percentages and per share amounts) 2022 2021 Percentage \\nChange \\n \\nRevenue $ 198,270 $ 168,088 18% \\nGross margin 135,620 115,856 17% \\nOperating income 83,383 69,916 19% \\nNet income 72,738 61,271 19% \\nDiluted earnings per share 9.65 8.05 20% \\n \\nAdjusted net income (non -GAAP) 69,447 60,651 15% \\nAdjusted diluted earnings per share (non -GAAP) 9.21 7.97 16% \\nAdjusted net income and adjusted diluted earnings per share (“EPS”) are non -GAAP financial measures which exclude \\nthe net income tax benefit related to transfer of intangible properties in the first quarter of fiscal year 2022 and the', 'score': 0.00040568286}, {'text': '82 \\nIn addition, certain costs incurred at a corporate level that are identifiable and that benefit our segments are allocated to \\nthem. These allocated costs include legal, including settlements and fines, information technology, human resources, \\nfinance, excise taxes, field selling, shared facilities services, and customer service and support. Each allocation is \\nmeasured differently based on the specific facts and circumstances of the costs being allocated. \\nSegment revenue and operating income were as follows during the periods presented: \\n \\n(In millions) \\n \\nYear Ended June 30, 2022 2021 2020 \\n \\nRevenue \\n \\nProductivity and Business Processes $ 63,364 $ 53,915 $ 46,398 \\nIntelligent Cloud 75,251 60,080 48,366 \\nMore Personal Computing 59,655 54,093 48,251 \\nTotal $ 198,270 $ 168,088 $ 143,015 \\n \\nOperating Income \\n \\nProductivity and Business Processes $ 29,687 $ 24,351 $ 18,724 \\nIntelligent Cloud 32,721 26,126 18,324 \\nMore Personal Computing 20,975 19,439 15,911 \\nTotal $ 83,383 $ 69,916 $ 52,959 \\nNo sales to an individual customer or country other than the United States accounted for more than 10% of revenue for \\nfiscal years 2022, 2021, or 2020. Revenue, classified by the major geographic areas in which our customers were located, \\nwas as follows: \\n \\n(In millions) \\n \\nYear Ended June 30, 2022 2021 2020 \\n \\nUnited States (a) $ 100,218 $ 83,953 $ 73,160 \\nOther countries 98,052 84,135 69,855 \\nTotal $ 198,270 $ 168,088 $ 143,015 \\n(a) Includes billings to OEMs and certain multinational organizations because of the nature of these businesses and the \\nimpracticability of determining the geographic source of the revenue. \\nRevenue, classified by significant product and service offerings, was as follows: \\n \\n(In millions) \\n \\nYear Ended June 30, 2022 2021 2020 \\n \\nServer products and cloud services $ 67,321 $ 52,589 $ 41,379 \\nOffice products and cloud services 44,862 39,872 35,316 \\nWindows 24,761 22,488 21,510 \\nGaming 16,230 15,370 11,575 \\nLinkedIn 13,816 10,289 8,077 \\nSearch and news advertising 11,591 9,267 8,524 \\nEnterprise Services 7,407 6,943 6,409 \\nDevices 6,991 6,791 6,457 \\nOther 5,291 4,479 3,768 \\nTotal $ 198,270 $ 168,088 $ 143,015 \\nWe have recast certain previously reported amounts in the table above to conform to the way we internally manage and \\nmonitor our business.', 'score': 0.00026307348}]\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# this how you can use this methods & pass this data to llm & get better results fro your RAG applications" + ], + "metadata": { + "id": "bzHa6zld2wQa" + } + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "GowqlU-y2wda" + }, + "execution_count": null, + "outputs": [] + } + ] +} diff --git a/examples/RAG_Reranking/README.md b/examples/RAG_Reranking/README.md new file mode 100644 index 00000000..724907a5 --- /dev/null +++ b/examples/RAG_Reranking/README.md @@ -0,0 +1,15 @@ +Open In Colab + +Re-ranking is the simplest. Idea is pretty simple. + +1. You assume that Embedding + Search algo are not 100% precise so you use Recall to your advantage and get similar high `N` (say 25) number of related chunks from corpus. + +2. Second step is to use a powerful model to increase the Precision. You re-rank above `N` queries again so that you can change the relative ordering and now select Top `K` queries (say 3) to pass as a context where `K` < `N` thus increasing the Precision. + +Re-rank Search Results uses Reranker. + +![img](../../assets/reranker.webp) + +Open In Colab + +[Read Full Blog](https://blog.lancedb.com/simplest-method-to-improve-rag-pipeline-re-ranking-cf6eaec6d544/) \ No newline at end of file diff --git a/examples/RAG_re_ranking/lancedb_cloud/README.md b/examples/RAG_Reranking/lancedb_cloud/README.md similarity index 94% rename from examples/RAG_re_ranking/lancedb_cloud/README.md rename to examples/RAG_Reranking/lancedb_cloud/README.md index 96a2d95b..53a36feb 100644 --- a/examples/RAG_re_ranking/lancedb_cloud/README.md +++ b/examples/RAG_Reranking/lancedb_cloud/README.md @@ -22,8 +22,9 @@ os.environ["LANCEDB_API_KEY"] = getpass.getpass("Enter Your LANCEDB API Key:") replace the following lines in main.py with your project slug and api key" ``` -db_url = "db://your-project-name" +db_url="db://your-project-slug-name" api_key="sk_..." +region="us-east-1" ``` ### Run the script diff --git a/examples/RAG_re_ranking/lancedb_cloud/main.ipynb b/examples/RAG_Reranking/lancedb_cloud/main.ipynb similarity index 100% rename from examples/RAG_re_ranking/lancedb_cloud/main.ipynb rename to examples/RAG_Reranking/lancedb_cloud/main.ipynb diff --git a/examples/RAG_re_ranking/lancedb_cloud/main.py b/examples/RAG_Reranking/lancedb_cloud/main.py similarity index 100% rename from examples/RAG_re_ranking/lancedb_cloud/main.py rename to examples/RAG_Reranking/lancedb_cloud/main.py diff --git a/examples/RAG_re_ranking/lancedb_cloud/requirements.txt b/examples/RAG_Reranking/lancedb_cloud/requirements.txt similarity index 100% rename from examples/RAG_re_ranking/lancedb_cloud/requirements.txt rename to examples/RAG_Reranking/lancedb_cloud/requirements.txt diff --git a/examples/RAG_re_ranking/main.ipynb b/examples/RAG_Reranking/main.ipynb similarity index 100% rename from examples/RAG_re_ranking/main.ipynb rename to examples/RAG_Reranking/main.ipynb diff --git a/examples/SuperAgent_Autogen/README.md b/examples/SuperAgent_Autogen/README.md new file mode 100644 index 00000000..75bf77e9 --- /dev/null +++ b/examples/SuperAgent_Autogen/README.md @@ -0,0 +1,52 @@ + Open In Colab + +# Super Agent: Integrating Autogen Technologies and Vector Databases + +## Overview +![image](../../assets/superagent-autogen.png) + + +The Super Agent project showcases the integration of cutting-edge technologies including Ollama, LiteLLM, Autogen, LanceDB, and LangChain to create a powerful AI agent. This agent leverages the strengths of vector databases and conversational AI to provide sophisticated data management and context-aware interactions. The goal is to harness the capabilities of LanceDB's vector database and Autogen's conversational AI framework to build a Super Agent that excels in understanding and processing complex queries. + +## Installation + +For detailed installation instructions, please refer to our comprehensive guide available in the Google Colaboratory notebook: + + Open In Colab + + +This guide will walk you through setting up each component of the Super Agent, ensuring a seamless integration process. + +## Building the Super Agent + +### Setting Up Autogen + +Autogen plays a pivotal role in developing sophisticated conversational AI agents. It enables the creation of dynamic agents capable of engaging in complex dialogues, significantly enhancing user interaction. + +### Integrating LiteLLM and Ollama + +- **LiteLLM**: Facilitates easy API connectivity with large language models, allowing for seamless integration and interaction. +- **Ollama**: Used for deploying large language models (LLMs) on a local system, Ollama ensures that the power of LLMs can be harnessed directly within your environment. + +### Leveraging LangChain for Contextual Awareness + +LangChain is instrumental in enhancing the Super Agent's ability to comprehend and act upon the context within user queries, providing more accurate and relevant responses. + +### Utilizing LanceDB for Efficient Data Management + +LanceDB is a vector database that excels in managing and querying large datasets efficiently, making it an essential component for the Super Agent. It allows for quick and precise searches, facilitating better data access and manipulation. + +## Implementation Steps + +The Super Agent's implementation involves several key steps: + +1. **Vector Store Creation**: Index the target PDF with LanceDB to create a searchable vector store. +2. **LangChain Setup**: Implement a Question-Answer (QA) chain with LangChain to enable context-aware querying. +3. **Autogen Agents Integration**: Configure user and assistant agents using Autogen for interactive and dynamic querying. + +## Resources + +- **Google Colab**: For hands-on examples and detailed code snippets for implementing the Super Agent, visit our [Google Colab Notebook](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/SuperAgent_Autogen/main.ipynb). + +- **Blog Post**: For a more in-depth exploration of the concepts and methodologies discussed in this project, please visit our [Blog Post](https://blog.lancedb.com/optimizing-ai-agents-harnessing-openai-compatible-technologies-and-vector-databases/). + diff --git a/examples/SuperAgent_Autogen/main.ipynb b/examples/SuperAgent_Autogen/main.ipynb new file mode 100644 index 00000000..9278654b --- /dev/null +++ b/examples/SuperAgent_Autogen/main.ipynb @@ -0,0 +1,693 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "lHFbPb4JU9xF" + }, + "source": [ + "This notebook illustrates how you can use the langchain with custom pdf data & chat it using autogen agent" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3poVgyh-bZJ-", + "outputId": "ad799a6e-7eec-4e14-dae3-f7e86c9e67cc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m88.8/88.8 kB\u001b[0m \u001b[31m2.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m811.8/811.8 kB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m226.7/226.7 kB\u001b[0m \u001b[31m9.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m14.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m111.9/111.9 kB\u001b[0m \u001b[31m12.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m284.0/284.0 kB\u001b[0m \u001b[31m13.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m295.2/295.2 kB\u001b[0m \u001b[31m12.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.0/77.0 kB\u001b[0m \u001b[31m3.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m21.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m239.4/239.4 kB\u001b[0m \u001b[31m23.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m55.7/55.7 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.6/21.6 MB\u001b[0m \u001b[31m34.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m38.3/38.3 MB\u001b[0m \u001b[31m12.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.4/49.4 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m55.4/55.4 kB\u001b[0m \u001b[31m4.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.7/98.7 kB\u001b[0m \u001b[31m8.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "llmx 0.0.15a0 requires cohere, which is not installed.\n", + "ibis-framework 7.1.0 requires pyarrow<15,>=2, but you have pyarrow 15.0.0 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0m" + ] + } + ], + "source": [ + "%pip install pyautogen~=0.1.0 langchain openai tiktoken lancedb pypdf -q -U" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0tLTTT9ucFEb" + }, + "outputs": [], + "source": [ + "from langchain.embeddings import OpenAIEmbeddings\n", + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain.document_loaders import PyPDFLoader\n", + "from langchain.memory import ConversationBufferMemory\n", + "from langchain.llms import OpenAI\n", + "from langchain.chains import ConversationalRetrievalChain\n", + "from langchain_community.vectorstores import LanceDB" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ObNypsHRV3mz" + }, + "source": [ + "Requirements\n", + "AutoGen requires Python>=3.8. To run this notebook example, please install pyautogen:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6RuVu12whCG0" + }, + "outputs": [], + "source": [ + "!pip install pyautogen" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sUFdvTyVh8xF" + }, + "outputs": [], + "source": [ + "import lancedb\n", + "\n", + "embeddings = OpenAIEmbeddings(openai_api_key=\"sk-yourapikey\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kztlyFIXU8m-" + }, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ODKg12trdhX-", + "outputId": "a7041322-f633-496c-a8e8-126a81cbb5d9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2024-02-11 04:40:16-- https://pdf.usaid.gov/pdf_docs/PA00TBCT.pdf\n", + "Resolving pdf.usaid.gov (pdf.usaid.gov)... 23.7.61.67, 2600:1408:ec00:380::1923, 2600:1408:ec00:38f::1923\n", + "Connecting to pdf.usaid.gov (pdf.usaid.gov)|23.7.61.67|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 6419525 (6.1M) [application/pdf]\n", + "Saving to: ‘food.pdf’\n", + "\n", + "food.pdf 100%[===================>] 6.12M --.-KB/s in 0.1s \n", + "\n", + "2024-02-11 04:40:16 (42.7 MB/s) - ‘food.pdf’ saved [6419525/6419525]\n", + "\n" + ] + } + ], + "source": [ + "# !wget -O uniswap_v3.pdf https://uniswap.org/whitepaper-v3.pdf\n", + "!wget -O food.pdf https://pdf.usaid.gov/pdf_docs/PA00TBCT.pdf" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1oC3NAFyd4Kb" + }, + "source": [ + "create OAI_CONFIG_LIST.json file in pwd & upload\n", + "in it\n", + "\n", + "\n", + "[\n", + " {\n", + " \"model\": \"gpt-4\",\n", + " \"api_key\": \"sk-yourapikey\"\n", + " }\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "H1bRXWu-cE_C" + }, + "outputs": [], + "source": [ + "import autogen\n", + "\n", + "config_list = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST.json\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\"],\n", + " },\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yV0pNPiRPy8h" + }, + "source": [ + "# create file name with OAI_CONFIG_LIT.json & put below authentications code" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yWDhjTDMcFBi" + }, + "outputs": [], + "source": [ + "# create file name with OAI_CONFIG_LIT.\n", + "[{\"model\": \"gpt-4\", \"api_key\": \"sk-yourapikey\"}]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5gapqmsscFG-" + }, + "outputs": [], + "source": [ + "loaders = [PyPDFLoader(\"./food.pdf\")]\n", + "docs = []\n", + "for l in loaders:\n", + " docs.extend(l.load())\n", + "text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000)\n", + "docs = text_splitter.split_documents(docs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5dLkCqa0dLXV", + "outputId": "28ab5984-c875-4281-95e5-d48bfdd12e99" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The class `langchain_community.embeddings.openai.OpenAIEmbeddings` was deprecated in langchain-community 0.1.0 and will be removed in 0.2.0. An updated version of the class exists in the langchain-openai package and should be used instead. To use it run `pip install -U langchain-openai` and import as `from langchain_openai import OpenAIEmbeddings`.\n", + " warn_deprecated(\n" + ] + } + ], + "source": [ + "import lancedb\n", + "\n", + "embeddings = OpenAIEmbeddings(openai_api_key=\"sk-yourapikey\")\n", + "\n", + "db = lancedb.connect(\"/tmp/lancedb\")\n", + "table = db.create_table(\n", + " \"my_table\",\n", + " data=[\n", + " {\n", + " \"vector\": embeddings.embed_query(\"Hello food\"),\n", + " \"text\": \"Hello food\",\n", + " \"id\": \"1\",\n", + " }\n", + " ],\n", + " mode=\"overwrite\",\n", + ")\n", + "\n", + "vectorstore = LanceDB.from_documents(docs, embeddings, connection=table)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YMBoF5kucFMJ", + "outputId": "13d7edab-5f3d-4698-fe6f-40f33dcd865a" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The class `langchain_community.llms.openai.OpenAI` was deprecated in langchain-community 0.0.10 and will be removed in 0.2.0. An updated version of the class exists in the langchain-openai package and should be used instead. To use it run `pip install -U langchain-openai` and import as `from langchain_openai import OpenAI`.\n", + " warn_deprecated(\n" + ] + } + ], + "source": [ + "qa = ConversationalRetrievalChain.from_llm(\n", + " OpenAI(\n", + " temperature=0,\n", + " openai_api_key=\"sk-yourapikey\",\n", + " ),\n", + " vectorstore.as_retriever(),\n", + " memory=ConversationBufferMemory(memory_key=\"chat_history\", return_messages=True),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "HjSVygLIcSEX" + }, + "outputs": [], + "source": [ + "def answer_food_question(question):\n", + " response = qa({\"question\": question})\n", + " return response[\"answer\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 160 + }, + "id": "XCqxSaQSepsW", + "outputId": "c1fc1bdc-9f2e-467b-cb51-fdde3fc964ae" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `__call__` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", + " warn_deprecated(\n" + ] + }, + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "' Good food is food that provides the recommended amounts of nutrients for the body to perform all its physiological activities. It is important to eat the right food, at the right time, in the right amounts, and prepared correctly in order to maintain a balanced diet and promote good nutrition. Good food is essential for physical and cognitive development and can improve overall health and quality of life.'" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "question = \"what is good food\"\n", + "answer_food_question(question)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BY4Fz-l7cUCA", + "outputId": "3a10b926-3659-46d3-d76b-7e083daf8fca" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pyautogen in /usr/local/lib/python3.10/dist-packages (0.1.14)\n", + "Requirement already satisfied: diskcache in /usr/local/lib/python3.10/dist-packages (from pyautogen) (5.6.3)\n", + "Requirement already satisfied: flaml in /usr/local/lib/python3.10/dist-packages (from pyautogen) (2.1.1)\n", + "Requirement already satisfied: openai<1 in /usr/local/lib/python3.10/dist-packages (from pyautogen) (0.28.1)\n", + "Requirement already satisfied: python-dotenv in /usr/local/lib/python3.10/dist-packages (from pyautogen) (1.0.1)\n", + "Requirement already satisfied: termcolor in /usr/local/lib/python3.10/dist-packages (from pyautogen) (2.4.0)\n", + "Requirement already satisfied: requests>=2.20 in /usr/local/lib/python3.10/dist-packages (from openai<1->pyautogen) (2.31.0)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from openai<1->pyautogen) (4.66.1)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from openai<1->pyautogen) (3.9.3)\n", + "Requirement already satisfied: NumPy>=1.17.0rc1 in /usr/local/lib/python3.10/dist-packages (from flaml->pyautogen) (1.23.5)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai<1->pyautogen) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai<1->pyautogen) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai<1->pyautogen) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai<1->pyautogen) (2024.2.2)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai<1->pyautogen) (1.3.1)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai<1->pyautogen) (23.2.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai<1->pyautogen) (1.4.1)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai<1->pyautogen) (6.0.5)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai<1->pyautogen) (1.9.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai<1->pyautogen) (4.0.3)\n" + ] + } + ], + "source": [ + "!pip install pyautogen" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "anvuLAIycaqb" + }, + "source": [ + "#### 4. Set up AutoGen user agent and assistant agent with function calling enabled." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Vca8Y_khcUID" + }, + "outputs": [], + "source": [ + "llm_config = {\n", + " \"request_timeout\": 600,\n", + " \"seed\": 42,\n", + " \"config_list\": config_list,\n", + " \"temperature\": 0,\n", + " \"functions\": [\n", + " {\n", + " \"name\": \"answer_food_question\",\n", + " \"description\": \"Answer to any quetion related to food & provided answer_food_question \",\n", + " \"parameters\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"question\": {\n", + " \"type\": \"string\",\n", + " \"description\": \"The question to ask in relation to food\",\n", + " }\n", + " },\n", + " \"required\": [\"question\"],\n", + " },\n", + " }\n", + " ],\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1XHjzIYAcfE7" + }, + "outputs": [], + "source": [ + "# create an AssistantAgent instance named \"assistant\"\n", + "assistant = autogen.AssistantAgent(\n", + " name=\"assistant\",\n", + " llm_config=llm_config,\n", + ")\n", + "# create a UserProxyAgent instance named \"user_proxy\"\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"user_proxy\",\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=10,\n", + " code_execution_config={\"work_dir\": \".\"},\n", + " llm_config=llm_config,\n", + " system_message=\"\"\"Reply TERMINATE if the task has been solved at full satisfaction.\n", + "Otherwise, reply CONTINUE, or the reason why the task is not solved yet.\"\"\",\n", + " function_map={\"answer_food_question\": answer_food_question},\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hOZKxakHchZ4", + "outputId": "7ca36fe0-a211-409a-abb0-57e3cd05e429" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "user_proxy (to assistant):\n", + "\n", + "\n", + "what is good food?\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "assistant (to user_proxy):\n", + "\n", + "***** Suggested function Call: answer_food_question *****\n", + "Arguments: \n", + "\n", + "{\n", + " \"question\": \"what is good food?\"\n", + "}\n", + "*********************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\n", + ">>>>>>>> EXECUTING FUNCTION answer_food_question...\n", + "user_proxy (to assistant):\n", + "\n", + "***** Response from calling function \"answer_food_question\" *****\n", + " Good food is food that is able to provide the recommended amounts of nutrients for the body to perform all its physiological activities. It is important for our health and well-being because it helps us maintain a balanced diet, promotes physical and cognitive development, and protects us from foodborne illnesses. Good food also ensures that we have enough energy for physical activity and basic body functions, and it helps us maintain a healthy weight. Additionally, good food can improve our overall quality of life and productivity.\n", + "*****************************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "assistant (to user_proxy):\n", + "\n", + "Good food is food that is able to provide the recommended amounts of nutrients for the body to perform all its physiological activities. It is important for our health and well-being because it helps us maintain a balanced diet, promotes physical and cognitive development, and protects us from foodborne illnesses. Good food also ensures that we have enough energy for physical activity and basic body functions, and it helps us maintain a healthy weight. Additionally, good food can improve our overall quality of life and productivity.\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n", + "user_proxy (to assistant):\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# the assistant receives a message from the user, which contains the task description\n", + "user_proxy.initiate_chat(\n", + " assistant,\n", + " message=\"\"\"\n", + "what is good food?\n", + "\"\"\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "UDXo2V06fNjz", + "outputId": "37cf6766-9b68-4a81-e0c6-245d2af28a30" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "user_proxy (to assistant):\n", + "\n", + "\n", + "please explain me essential minerals, sources, functions and symptoms of\n", + "deficiency?\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "assistant (to user_proxy):\n", + "\n", + "Sure, here are some essential minerals, their sources, functions, and symptoms of deficiency:\n", + "\n", + "1. Calcium:\n", + " - Sources: Dairy products, leafy green vegetables, fish with edible bones (like sardines and salmon), fortified foods.\n", + " - Functions: Necessary for bone health, muscle function, nerve transmission, blood clotting.\n", + " - Deficiency Symptoms: Osteoporosis, rickets in children, muscle cramps, dental problems.\n", + "\n", + "2. Iron:\n", + " - Sources: Red meat, poultry, eggs, fruits, green vegetables, fortified bread.\n", + " - Functions: Essential for the production of red blood cells, helps in oxygen transport.\n", + " - Deficiency Symptoms: Anemia, fatigue, weakness, immune system problems.\n", + "\n", + "3. Magnesium:\n", + " - Sources: Nuts, seeds, whole grains, green leafy vegetables, fish, beans, yogurt.\n", + " - Functions: Helps in over 300 enzyme reactions, including regulation of blood pressure, supports immune system.\n", + " - Deficiency Symptoms: Loss of appetite, nausea, fatigue, weakness, muscle cramps, numbness.\n", + "\n", + "4. Potassium:\n", + " - Sources: Bananas, oranges, cantaloupe, honeydew, apricots, grapefruit, cooked spinach, cooked broccoli, potatoes, sweet potatoes, mushrooms, peas, cucumbers, zucchini, eggplant, pumpkins, leafy greens.\n", + " - Functions: Maintains fluid balance, helps in nerve transmission and muscle contraction.\n", + " - Deficiency Symptoms: Fatigue, weakness, constipation, muscle cramps.\n", + "\n", + "5. Zinc:\n", + " - Sources: Meat, shellfish, legumes, seeds, nuts, dairy, eggs, whole grains.\n", + " - Functions: Necessary for immune function, protein synthesis, DNA synthesis, cell division, wound healing.\n", + " - Deficiency Symptoms: Growth retardation, loss of appetite, impaired immune function, hair loss, diarrhea, delayed sexual maturation.\n", + "\n", + "Please note that this is not an exhaustive list and there are other essential minerals as well. Also, the symptoms of deficiency can vary from person to person and can often be symptoms of other conditions as well. Always consult with a healthcare provider for accurate information.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "user_proxy (to assistant):\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# the assistant receives a message from the user, which contains the task description\n", + "user_proxy.initiate_chat(\n", + " assistant,\n", + " message=\"\"\"\n", + "please explain me essential minerals, sources, functions and symptoms of\n", + "deficiency?\n", + "\"\"\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "UrlFGYW0g0sJ", + "outputId": "e82396e5-3dca-402c-889c-394557aeea0d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "user_proxy (to assistant):\n", + "\n", + "\n", + "which food Keeps eyes healthy ?\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "assistant (to user_proxy):\n", + "\n", + "***** Suggested function Call: answer_food_question *****\n", + "Arguments: \n", + "\n", + "{\n", + " \"question\": \"which food Keeps eyes healthy ?\"\n", + "}\n", + "*********************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\n", + ">>>>>>>> EXECUTING FUNCTION answer_food_question...\n", + "user_proxy (to assistant):\n", + "\n", + "***** Response from calling function \"answer_food_question\" *****\n", + " Foods that are rich in Vitamin A, such as yellow/orange fruits and vegetables, dark green and deep yellow fruits and vegetables, liver, egg yolk, dairy products, and margarine can help maintain healthy eyes.\n", + "*****************************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "assistant (to user_proxy):\n", + "\n", + "Foods that are rich in Vitamin A can help maintain healthy eyes. These include:\n", + "\n", + "1. Yellow/orange fruits and vegetables: These include carrots, sweet potatoes, pumpkins, and apricots.\n", + "2. Dark green and deep yellow fruits and vegetables: These include spinach, kale, and other leafy greens.\n", + "3. Liver: This is a great source of Vitamin A.\n", + "4. Egg yolk: This is another good source of Vitamin A.\n", + "5. Dairy products: These include milk, cheese, and yogurt.\n", + "6. Margarine: This is also a good source of Vitamin A.\n", + "\n", + "Including these foods in your diet can help keep your eyes healthy.\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n", + "user_proxy (to assistant):\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# the assistant receives a message from the user, which contains the task description\n", + "user_proxy.initiate_chat(\n", + " assistant,\n", + " message=\"\"\"\n", + "which food Keeps eyes healthy ?\n", + "\"\"\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "En6-kvjcjaid" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/databricks_DBRX_website_bot/README.md b/examples/databricks_DBRX_website_bot/README.md new file mode 100644 index 00000000..e99db29e --- /dev/null +++ b/examples/databricks_DBRX_website_bot/README.md @@ -0,0 +1,27 @@ +## Hogwarts chatbot with Open source RAG using DBRX, LanceDB, and LLama-index with Huggingface Embeddings + +This application is a website chatbot that uses the Open source RAG model with DBRX, LanceDB, and LLama-index with Hugginface Embeddings. + +### Steps to Run the Application + +1. Install Dependencies +``` +pip install -r requirements.txt +``` + +2. Setup Databricks Serving Endpoint and token as environment variables for using databricks serving endpoint. You can also use the dbrx model locally as it is open source. +``` +export DATABRICKS_TOKEN= +DATABRICKS_SERVING_ENDPOINT= +``` + +3. Run the application +``` +python main.py +``` + +Accepted arguments: +- `url`: URL of the document to be indexed. Default is the Hogwarts School of Witchcraft and Wizardry Wikipedia page. +- `embed_model`: Huggingface model to use for embeddings. Default is `mixedbread-ai/mxbai-embed-large-v1`. +- `uri`: URI of the vector store. Default is `~/tmp/lancedb_hogwarts`. +- `force_create_embeddings`: Whether to force create embeddings. Default is `False`. diff --git a/examples/databricks_DBRX_website_bot/main.py b/examples/databricks_DBRX_website_bot/main.py new file mode 100644 index 00000000..cef72f9b --- /dev/null +++ b/examples/databricks_DBRX_website_bot/main.py @@ -0,0 +1,65 @@ +# Load data +import argparse +from llama_index.core import VectorStoreIndex, Settings, StorageContext +from llama_index.readers.web import SimpleWebPageReader +from llama_index.vector_stores.lancedb import LanceDBVectorStore +from llama_index.llms.databricks import Databricks +from llama_index.embeddings.huggingface import HuggingFaceEmbedding + + +def get_doc_from_url(url): + documents = SimpleWebPageReader(html_to_text=True).load_data([url]) + return documents + + +def build_RAG( + url="https://harrypotter.fandom.com/wiki/Hogwarts_School_of_Witchcraft_and_Wizardry", + embed_model="mixedbread-ai/mxbai-embed-large-v1", + uri="~/tmp/lancedb_hogwart", + force_create_embeddings=False, +): + Settings.embed_model = HuggingFaceEmbedding(model_name=embed_model) + Settings.llm = Databricks(model="databricks-dbrx-instruct") + + documents = get_doc_from_url(url) + vector_store = LanceDBVectorStore(uri=uri) + storage_context = StorageContext.from_defaults(vector_store=vector_store) + index = VectorStoreIndex.from_documents(documents, storage_context=storage_context) + query_engine = index.as_chat_engine() + + print("Ask a question relevant to the given context:") + while True: + query = input() + response = query_engine.chat(query) + print(response) + print("\n") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Build RAG system") + parser.add_argument( + "--url", + type=str, + default="https://harrypotter.fandom.com/wiki/Hogwarts_School_of_Witchcraft_and_Wizardry", + help="URL of the document", + ) + parser.add_argument( + "--embed_model", + type=str, + default="mixedbread-ai/mxbai-embed-large-v1", + help="Embedding model", + ) + parser.add_argument( + "--uri", + type=str, + default="~/tmp/lancedb_hogwarts_12", + help="URI of the vector store", + ) + parser.add_argument( + "--force_create_embeddings", + type=bool, + default=False, + help="Force create embeddings", + ) + args = parser.parse_args() + build_RAG(args.url, args.embed_model, args.uri, args.force_create_embeddings) diff --git a/examples/databricks_DBRX_website_bot/requirements.txt b/examples/databricks_DBRX_website_bot/requirements.txt new file mode 100644 index 00000000..a25f1f64 --- /dev/null +++ b/examples/databricks_DBRX_website_bot/requirements.txt @@ -0,0 +1,5 @@ +llama-index +llama-index-llms-databricks +llama-index-embeddings-huggingface +llama-index-readers-web +llama-index-vector-stores-lancedb \ No newline at end of file diff --git a/examples/js-transformers/lancedb_cloud/README.md b/examples/js-transformers/lancedb_cloud/README.md new file mode 100644 index 00000000..0b899e28 --- /dev/null +++ b/examples/js-transformers/lancedb_cloud/README.md @@ -0,0 +1,28 @@ +# Vector embedding search using TransformersJS +![image](https://github.com/lancedb/vectordb-recipes/assets/43097991/41c1dea3-ad28-42c1-969f-a81146f202e9) + + +### Set credentials +if you would like to set api key through an environment variable: +``` +export LANCEDB_API_KEY="sk_..." +``` + +replace the following lines in index.js with your project slug and api key" +``` +db_url: "db://your-project-slug-name" +api_key: "sk_..." +region: "us-east-1" +``` + +### Setup +Install node dependencies +```javascript +npm install +``` + +### Javascript +Run the script +```javascript +node index.js +``` \ No newline at end of file diff --git a/examples/movie-recommender/lancedb_cloud/README.md b/examples/movie-recommender/lancedb_cloud/README.md index 45d743f3..df979a70 100644 --- a/examples/movie-recommender/lancedb_cloud/README.md +++ b/examples/movie-recommender/lancedb_cloud/README.md @@ -19,8 +19,9 @@ export LANCEDB_API_KEY="sk_..." replace the following lines in main.py with your project slug and api key" ``` -db_url = "db://your-project-name" - api_key="sk_..." +db_url="db://your-project-slug-name" +api_key="sk_..." +region="us-east-1" ``` ### Python diff --git a/examples/parent_document_retriever/README.md b/examples/parent_document_retriever/README.md index c7f6831a..c66b885d 100644 --- a/examples/parent_document_retriever/README.md +++ b/examples/parent_document_retriever/README.md @@ -1,8 +1,13 @@ +Open In Colab + # Modified RAG: Parent Document & Bigger chunk Retriever -To get around the problem of larger size of Parent document, what you can do right now is to make bigger chunks along with smaller ones. For example, if your smaller chunks are of 512 tokens and your Parent Documents are of 2048 tokens on average, you can make chunks of size 1024. Now during retrieval, it’ll match as the previous one above BUT this time, instead of parent document, it’ll fetch the Bigger chunk and pass it to LLM. this way you’ll lose some text for sure but not completely. You could use use 2 verses instead of original 4 to make the model understand the writing style, context etc etc that too being within the limits. Good thing, you just have to change 1 line from the previous one. -
+There are some cases when your users want to have a task done by providing just a couple of lines input or even worse, couple of words. In this example, let’s say I have a “Sequel” song generation task given a line or two as input. Now if it’s a Part-2 of something, the tone, writing style, story etc are supposed to be related to the previous song so given the line “I am whatever I am”, my LLM should generate something related to the previous song not a mixture of 10 different songs and artists. If you use a vanilla RAG here, you’d be getting multiple results which might not be from same song, artist or even genre. If you use only the first match, you lose a lot of context as a smaller chunk won’t give the full context of the song. + +### Solution +There are 2 approaches to tackle that. Let’s go one by one from theory to code starting from **Parent Document Retriever**. + -Colab walkthrough - Open In Colab +Open In Colab [Read full blog](https://blog.lancedb.com/modified-rag-parent-document-bigger-chunk-retriever-62b3d1e79bc6) diff --git a/examples/product-recommender/lancedb_cloud/README.md b/examples/product-recommender/lancedb_cloud/README.md index 309697f6..ae5ad0b0 100644 --- a/examples/product-recommender/lancedb_cloud/README.md +++ b/examples/product-recommender/lancedb_cloud/README.md @@ -30,8 +30,9 @@ os.environ["LANCEDB_API_KEY"] = getpass.getpass("Enter Your LANCEDB API Key:") replace the following lines in main.py with your project slug and api key" ``` -db_url = "db://your-project-name" +db_url="db://your-project-slug-name" api_key="sk_..." +region="us-east-1" ``` Run the script diff --git a/examples/reducing_hallucinations_ai_agents/README.md b/examples/reducing_hallucinations_ai_agents/README.md index 86265eb7..a144a59b 100644 --- a/examples/reducing_hallucinations_ai_agents/README.md +++ b/examples/reducing_hallucinations_ai_agents/README.md @@ -4,7 +4,7 @@ AI agents can help simplify and automate tedious workflows. By going through thi Colab walkthrough - Open In Colab -![Screenshot from 2023-12-21 22-35-58](https://github.com/PrashantDixit0/vectordb-recipes/assets/54981696/9062255b-a4f1-480c-a858-3b3358be09fd) +![alt text](../../assets/critique-based-contexting.png) ### Setup diff --git a/examples/search-within-images-with-sam-and-clip/README.md b/examples/search-within-images-with-sam-and-clip/README.md index 25888ae3..1ab3a6ef 100644 --- a/examples/search-within-images-with-sam-and-clip/README.md +++ b/examples/search-within-images-with-sam-and-clip/README.md @@ -1,7 +1,7 @@ # 🔍Search engine using SAM & CLIP -Open In Colab [![Medium](https://img.shields.io/badge/Medium-12100E?style=for-the-badge&logo=medium&logoColor=white)](https://medium.com/etoai/search-within-an-image-331b54e4285e) -![“A Dog”](https://github.com/kaushal07wick/vectordb-recipes/assets/57106063/3907c1e5-009b-4ffb-8ea2-2eddb58f3346) +Open In Colab [![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/search-within-an-image-331b54e4285e) +![“A Dog”](../../assets/search-within-image.png) ### 🚀Create a Search Engine within an Image use **SAM**(Segment Anything) and **CLIP** (Constrastive Language Image Pretraining) model. Follow the Colab Notebook for full code. @@ -16,4 +16,6 @@ Follow the Colab Notebook for full code. 6. Use Search method to find the closest match of Image Embedding (particular Segmentation Mask) and User Query. 7. Output the Highlighted closest object present. - Read the Full blog post on **Medium** + +![“A Dog”](../../assets/search-within-image-flow.png) + Read the Full [blog post](https://blog.lancedb.com/search-within-an-image-331b54e4285e) diff --git a/tutorials/Langchain-LlamaIndex-Chunking/Langchain_Llamaindex_chunking.ipynb b/tutorials/Langchain-LlamaIndex-Chunking/Langchain_Llamaindex_chunking.ipynb new file mode 100644 index 00000000..badab977 --- /dev/null +++ b/tutorials/Langchain-LlamaIndex-Chunking/Langchain_Llamaindex_chunking.ipynb @@ -0,0 +1,1148 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Llama Index Text Chunking Strategies\n" + ], + "metadata": { + "id": "1o6oVH_fNA0N" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lCgSu4wS5L02", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "c9cef73c-2e7b-4415-f1e0-3dad04cb76c6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m496.7/496.7 kB\u001b[0m \u001b[31m5.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.4/8.4 MB\u001b[0m \u001b[31m18.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m15.4/15.4 MB\u001b[0m \u001b[31m33.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m28.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.3/268.3 kB\u001b[0m \u001b[31m19.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m136.1/136.1 kB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m58.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m290.4/290.4 kB\u001b[0m \u001b[31m21.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.4/49.4 kB\u001b[0m \u001b[31m4.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h" + ] + } + ], + "source": [ + "!pip install llama_index tree_sitter tree_sitter_languages -q" + ] + }, + { + "cell_type": "code", + "source": [ + "# Download for running any text file\n", + "!wget https://raw.githubusercontent.com/lancedb/vectordb-recipes/main/README.md\n", + "!wget https://frontiernerds.com/files/state_of_the_union.txt" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xYx0PGZTD2xs", + "outputId": "042bb5d1-cb90-45c9-8183-0c986193cdb1" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--2024-04-15 10:06:43-- https://raw.githubusercontent.com/lancedb/vectordb-recipes/main/README.md\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 29701 (29K) [text/plain]\n", + "Saving to: ‘README.md’\n", + "\n", + "\rREADME.md 0%[ ] 0 --.-KB/s \rREADME.md 100%[===================>] 29.00K --.-KB/s in 0.002s \n", + "\n", + "2024-04-15 10:06:43 (12.1 MB/s) - ‘README.md’ saved [29701/29701]\n", + "\n", + "--2024-04-15 10:06:43-- https://frontiernerds.com/files/state_of_the_union.txt\n", + "Resolving frontiernerds.com (frontiernerds.com)... 172.67.180.189, 104.21.31.232, 2606:4700:3036::6815:1fe8, ...\n", + "Connecting to frontiernerds.com (frontiernerds.com)|172.67.180.189|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: unspecified [text/plain]\n", + "Saving to: ‘state_of_the_union.txt’\n", + "\n", + "state_of_the_union. [ <=> ] 39.91K --.-KB/s in 0.001s \n", + "\n", + "2024-04-15 10:06:43 (64.5 MB/s) - ‘state_of_the_union.txt’ saved [40864]\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## File based Node Parsers" + ], + "metadata": { + "id": "2olIZB2unXwz" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Node Parser - Simple File\n", + "Covering all the files intelligently" + ], + "metadata": { + "id": "HtW5uzownkVP" + } + }, + { + "cell_type": "code", + "source": [ + "# Simple File\n", + "from llama_index.core.node_parser import SimpleFileNodeParser\n", + "from llama_index.readers.file import FlatReader\n", + "from pathlib import Path\n", + "\n", + "md_docs = FlatReader().load_data(Path(\"README.md\"))\n", + "\n", + "parser = SimpleFileNodeParser()\n", + "\n", + "# Additionally, you can augment this with a text-based parser to accurately handle text length\n", + "md_nodes = parser.get_nodes_from_documents(md_docs)\n", + "md_nodes[0].text" + ], + "metadata": { + "id": "GqWdmhBdWrB4", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + }, + "outputId": "172b7873-06cc-4a71-fd5b-acdcd24aeb0d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'VectorDB-recipes\\n
\\nDive into building GenAI applications!\\nThis repository contains examples, applications, starter code, & tutorials to help you kickstart your GenAI projects.\\n\\n- These are built using LanceDB, a free, open-source, serverless vectorDB that **requires no setup**. \\n- It **integrates into python data ecosystem** so you can simply start using these in your existing data pipelines in pandas, arrow, pydantic etc.\\n- LanceDB has **native Typescript SDK** using which you can **run vector search** in serverless functions!\\n\\n\\n\\n
\\nJoin our community for support - Discord •\\nTwitter\\n\\n---\\n\\nThis repository is divided into 3 sections:\\n- [Examples](#examples) - Get right into the code with minimal introduction, aimed at getting you from an idea to PoC within minutes!\\n- [Applications](#projects--applications) - Ready to use Python and web apps using applied LLMs, VectorDB and GenAI tools\\n- [Tutorials](#tutorials) - A curated list of tutorials, blogs, Colabs and courses to get you started with GenAI in greater depth.'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Node Parser - HTML" + ], + "metadata": { + "id": "-au7BAS2nvBC" + } + }, + { + "cell_type": "code", + "source": [ + "# HTML\n", + "\n", + "import requests\n", + "from llama_index.core import Document\n", + "from llama_index.core.node_parser import HTMLNodeParser\n", + "\n", + "# URL of the website to fetch HTML from\n", + "url = \"https://www.utoronto.ca/\"\n", + "\n", + "# Send a GET request to the URL\n", + "response = requests.get(url)\n", + "print(response)\n", + "\n", + "# Check if the request was successful (status code 200)\n", + "if response.status_code == 200:\n", + " # Extract the HTML content from the response\n", + " html_doc = response.text\n", + " document = Document(id_=url, text=html_doc)\n", + "\n", + " parser = HTMLNodeParser(tags=[\"p\", \"h1\"])\n", + " nodes = parser.get_nodes_from_documents([document])\n", + " print(nodes)\n", + "else:\n", + " # Print an error message if the request was unsuccessful\n", + " print(\"Failed to fetch HTML content:\", response.status_code)" + ], + "metadata": { + "id": "Zhe7xYJtXw4l", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "7f32b9e5-225e-4a3e-b9a0-9a6287615f5a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "[TextNode(id_='bf308ea9-b937-4746-8645-c8023e2087d7', embedding=None, metadata={'tag': 'h1'}, excluded_embed_metadata_keys=[], excluded_llm_metadata_keys=[], relationships={: RelatedNodeInfo(node_id='https://www.utoronto.ca/', node_type=, metadata={}, hash='247fb639a05bc6898fd1750072eceb47511d3b8dae80999f9438e50a1faeb4b2'), : RelatedNodeInfo(node_id='7c280bdf-7373-4be8-8e70-6360848581e9', node_type=, metadata={'tag': 'p'}, hash='3e989bb32b04814d486ed9edeefb1b0ce580ba7fc8c375f64473ddd95ca3e824')}, text='Welcome to University of Toronto', start_char_idx=2784, end_char_idx=2816, text_template='{metadata_str}\\n\\n{content}', metadata_template='{key}: {value}', metadata_seperator='\\n'), TextNode(id_='7c280bdf-7373-4be8-8e70-6360848581e9', embedding=None, metadata={'tag': 'p'}, excluded_embed_metadata_keys=[], excluded_llm_metadata_keys=[], relationships={: RelatedNodeInfo(node_id='https://www.utoronto.ca/', node_type=, metadata={}, hash='247fb639a05bc6898fd1750072eceb47511d3b8dae80999f9438e50a1faeb4b2'), : RelatedNodeInfo(node_id='bf308ea9-b937-4746-8645-c8023e2087d7', node_type=, metadata={'tag': 'h1'}, hash='e1e6af749b6a40a4055c80ca6b821ed841f1d20972e878ca1881e508e4446c26')}, text='In photos: Under cloudy skies, U of T community gathers to experience near-total solar eclipse\\nYour guide to the U of T community\\nThe University of Toronto is home to some of the world’s top faculty, students, alumni and staff. U of T Celebrates recognizes their award-winning accomplishments.\\nDavid Dyzenhaus recognized with Gold Medal from Social Sciences and Humanities Research Council\\nOur latest issue is all about feeling good: the only diet you really need to know about, the science behind cold plunges, a uniquely modern way to quit smoking, the “sex, drugs and rock ‘n’ roll” of university classes, how to become a better workplace leader, and more.\\nFaculty and Staff\\nHis course about the body is a workout for the mind\\nProfessor Doug Richards teaches his students the secret to living a longer – and healthier – life\\n\\nStatement of Land Acknowledgement\\nWe wish to acknowledge this land on which the University of Toronto operates. For thousands of years it has been the traditional land of the Huron-Wendat, the Seneca, and the Mississaugas of the Credit. Today, this meeting place is still the home to many Indigenous people from across Turtle Island and we are grateful to have the opportunity to work on this land.\\nRead about U of T’s Statement of Land Acknowledgement.\\nUNIVERSITY OF TORONTO - SINCE 1827', start_char_idx=None, end_char_idx=None, text_template='{metadata_str}\\n\\n{content}', metadata_template='{key}: {value}', metadata_seperator='\\n')]\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Node Parser - JSON" + ], + "metadata": { + "id": "rbn4Rvt-n4Zr" + } + }, + { + "cell_type": "code", + "source": [ + "# JSON\n", + "\n", + "from llama_index.core.node_parser import JSONNodeParser\n", + "\n", + "url = \"https://housesigma.com/bkv2/api/search/address_v2/suggest\"\n", + "\n", + "payload = {\"lang\": \"en_US\", \"province\": \"ON\", \"search_term\": \"Mississauga, ontario\"}\n", + "\n", + "headers = {\"Authorization\": \"Bearer 20240127frk5hls1ba07nsb8idfdg577qa\"}\n", + "\n", + "response = requests.post(url, headers=headers, data=payload)\n", + "\n", + "if response.status_code == 200:\n", + " document = Document(id_=url, text=response.text)\n", + " parser = JSONNodeParser()\n", + "\n", + " nodes = parser.get_nodes_from_documents([document])\n", + " print(nodes[0])\n", + "else:\n", + " print(\"Failed to fetch JSON content:\", response.status_code)" + ], + "metadata": { + "id": "CW8pTEsEYdgL", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "28dae2de-f880-4874-95bb-5de82a716019" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Node ID: 05325093-16a2-41ac-b952-3882c817ac4d\n", + "Text: status True data house_list id_listing owJKR7PNnP9YXeLP data\n", + "house_list house_type_in_map D data house_list price_abbr 0.75M data\n", + "house_list price 749,000 data house_list price_sold 690,000 data\n", + "house_list tags Sold data house_list list_status public 1 data\n", + "house_list list_status live 0 data house_list list_status s_r Sale\n", + "data house_list list_s...\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Node Parser - Markdown" + ], + "metadata": { + "id": "VYBTqzmJn9Z5" + } + }, + { + "cell_type": "code", + "source": [ + "# Markdown\n", + "from llama_index.core.node_parser import MarkdownNodeParser\n", + "\n", + "md_docs = FlatReader().load_data(Path(\"README.md\"))\n", + "parser = MarkdownNodeParser()\n", + "\n", + "nodes = parser.get_nodes_from_documents(md_docs)\n", + "nodes[0].text" + ], + "metadata": { + "id": "55f43LgJYkok", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + }, + "outputId": "3b9a3865-0a58-4e53-cff5-17cb8d024631" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'VectorDB-recipes\\n
\\nDive into building GenAI applications!\\nThis repository contains examples, applications, starter code, & tutorials to help you kickstart your GenAI projects.\\n\\n- These are built using LanceDB, a free, open-source, serverless vectorDB that **requires no setup**. \\n- It **integrates into python data ecosystem** so you can simply start using these in your existing data pipelines in pandas, arrow, pydantic etc.\\n- LanceDB has **native Typescript SDK** using which you can **run vector search** in serverless functions!\\n\\n\\n\\n
\\nJoin our community for support - Discord •\\nTwitter\\n\\n---\\n\\nThis repository is divided into 3 sections:\\n- [Examples](#examples) - Get right into the code with minimal introduction, aimed at getting you from an idea to PoC within minutes!\\n- [Applications](#projects--applications) - Ready to use Python and web apps using applied LLMs, VectorDB and GenAI tools\\n- [Tutorials](#tutorials) - A curated list of tutorials, blogs, Colabs and courses to get you started with GenAI in greater depth.'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Chunking" + ], + "metadata": { + "id": "gCFoPc1PZFI5" + } + }, + { + "cell_type": "code", + "source": [ + "# Download for running Code Splitting\n", + "!wget https://raw.githubusercontent.com/lancedb/vectordb-recipes/main/applications/talk-with-podcast/app.py" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rVkeWuwvDwu-", + "outputId": "1ddb950a-0c0f-4be4-88fd-3029d53e6640" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--2024-04-15 10:22:58-- https://raw.githubusercontent.com/lancedb/vectordb-recipes/main/applications/talk-with-podcast/app.py\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.108.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 1582 (1.5K) [text/plain]\n", + "Saving to: ‘app.py’\n", + "\n", + "\rapp.py 0%[ ] 0 --.-KB/s \rapp.py 100%[===================>] 1.54K --.-KB/s in 0s \n", + "\n", + "2024-04-15 10:22:58 (12.1 MB/s) - ‘app.py’ saved [1582/1582]\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Code Splitting" + ], + "metadata": { + "id": "spibLOthoCsK" + } + }, + { + "cell_type": "code", + "source": [ + "# Code Splitting\n", + "\n", + "from llama_index.core.node_parser import CodeSplitter\n", + "\n", + "documents = FlatReader().load_data(Path(\"app.py\"))\n", + "splitter = CodeSplitter(\n", + " language=\"python\",\n", + " chunk_lines=40, # lines per chunk\n", + " chunk_lines_overlap=15, # lines overlap between chunks\n", + " max_chars=1500, # max chars per chunk\n", + ")\n", + "nodes = splitter.get_nodes_from_documents(documents)\n", + "nodes[0].text" + ], + "metadata": { + "id": "IDoDzDeiYqpL", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 140 + }, + "outputId": "5ac4578a-c5de-4060-cf9c-420a9078652b" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/tree_sitter/__init__.py:36: FutureWarning: Language(path, name) is deprecated. Use Language(ptr, name) instead.\n", + " warn(\"{} is deprecated. Use {} instead.\".format(old, new), FutureWarning)\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'from youtube_podcast_download import podcast_audio_retreival\\nfrom transcribe_podcast import transcribe\\nfrom chat_retreival import retrieverSetup, chat\\nfrom langroid_utils import configure, agent\\n\\nimport os\\nimport glob\\nimport json\\nimport streamlit as st\\n\\nOPENAI_KEY = os.environ[\"OPENAI_API_KEY\"]\\n\\n\\n@st.cache_resource\\ndef video_data_retreival(framework):\\n f = open(\"output.json\")\\n data = json.load(f)\\n\\n # setting up reteriver\\n if framework == \"Langchain\":\\n qa = retrieverSetup(data[\"text\"], OPENAI_KEY)\\n return qa\\n elif framework == \"Langroid\":\\n langroid_file = open(\"langroid_doc.txt\", \"w\") # write mode\\n langroid_file.write(data[\"text\"])\\n cfg = configure(\"langroid_doc.txt\")\\n return cfg\\n\\n\\nst.header(\"Talk with Youtube Podcasts\", divider=\"rainbow\")\\n\\nurl = st.text_input(\"Youtube Link\")\\nframework = st.radio(\\n \"**Select Framework 👇**\",\\n [\"Langchain\", \"Langroid\"],\\n key=\"Langchain\",\\n)\\n\\nif url:\\n st.video(url)\\n # Podcast Audio Retreival from Youtube\\n podcast_audio_retreival(url)\\n\\n # Trascribing podcast audio\\n filename = glob.glob(\"*.mp3\")[0]\\n transcribe(filename)\\n\\n st.markdown(f\"##### `{framework}` Framework Selected for talking with Podcast\")\\n # Chat Agent getting ready\\n qa = video_data_retreival(framework)\\n\\n\\nprompt = st.chat_input(\"Talk with Podcast\")\\n\\ni'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Sentence Splitting" + ], + "metadata": { + "id": "On40RuqBoGNL" + } + }, + { + "cell_type": "code", + "source": [ + "# Sentence Splitting\n", + "\n", + "from llama_index.core.node_parser import SentenceSplitter\n", + "\n", + "documents = FlatReader().load_data(Path(\"state_of_the_union.txt\"))\n", + "splitter = SentenceSplitter(\n", + " chunk_size=254,\n", + " chunk_overlap=20,\n", + ")\n", + "nodes = splitter.get_nodes_from_documents(documents)\n", + "nodes[0].text" + ], + "metadata": { + "id": "iNKuiCNrZOHl", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + }, + "outputId": "47064bf4-4079-42df-83b6-d519ba92a135" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "\"Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\\n\\nOur Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty. They have done so during periods of prosperity and tranquility. And they have done so in the midst of war and depression; at moments of great strife and great struggle.\\n\\nIt's tempting to look back on these moments and assume that our progress was inevitable, that America was always destined to succeed. But when the Union was turned back at Bull Run and the Allies first landed at Omaha Beach, victory was very much in doubt. When the market crashed on Black Tuesday and civil rights marchers were beaten on Bloody Sunday, the future was anything but certain. These were times that tested the courage of our convictions and the strength of our union. And despite all our divisions and disagreements, our hesitations and our fears, America prevailed because we chose to move forward as one nation and one people.\\n\\nAgain, we are tested. And again, we must answer history's call.\"" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Node Parser - Sentence Window" + ], + "metadata": { + "id": "h5zc7_YmoJHP" + } + }, + { + "cell_type": "code", + "source": [ + "# SentenceWindowNodeParser\n", + "\n", + "import nltk\n", + "from llama_index.core.node_parser import SentenceWindowNodeParser\n", + "\n", + "node_parser = SentenceWindowNodeParser.from_defaults(\n", + " window_size=3,\n", + " window_metadata_key=\"window\",\n", + " original_text_metadata_key=\"original_sentence\",\n", + ")\n", + "nodes = node_parser.get_nodes_from_documents(documents)\n", + "nodes[0].text" + ], + "metadata": { + "id": "76tbzUrMZRFF", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 53 + }, + "outputId": "7f57513d-da7b-45f9-96c0-5698e06f1562" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\\n\\nOur Constitution declares that from time to time, the president shall give to Congress information about the state of our union. '" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Node Parser - Semantic Splitting" + ], + "metadata": { + "id": "zj45BKLMoRgp" + } + }, + { + "cell_type": "code", + "source": [ + "# SemanticSplitterNodeParser\n", + "\n", + "from llama_index.core.node_parser import SemanticSplitterNodeParser\n", + "from llama_index.embeddings.openai import OpenAIEmbedding\n", + "import os\n", + "\n", + "# Add OpenAI API key as environment variable\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-****\"\n", + "\n", + "embed_model = OpenAIEmbedding()\n", + "splitter = SemanticSplitterNodeParser(\n", + " buffer_size=1, breakpoint_percentile_threshold=95, embed_model=embed_model\n", + ")\n", + "\n", + "nodes = splitter.get_nodes_from_documents(documents)\n", + "nodes[0].text" + ], + "metadata": { + "id": "wAp7BU25ZdRt", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 53 + }, + "outputId": "3f51c53b-7617-4c67-c247-125f7a6b84be" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\\n\\nOur Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty. '" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Token Text Splitting" + ], + "metadata": { + "id": "vH9xni1SoWYE" + } + }, + { + "cell_type": "code", + "source": [ + "# TokenTextSplitting\n", + "\n", + "from llama_index.core.node_parser import TokenTextSplitter\n", + "\n", + "splitter = TokenTextSplitter(\n", + " chunk_size=254,\n", + " chunk_overlap=20,\n", + " separator=\" \",\n", + ")\n", + "nodes = splitter.get_nodes_from_documents(documents)\n", + "nodes[0].text" + ], + "metadata": { + "id": "9G61og__Ziec", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + }, + "outputId": "5b11b5f9-94d1-4b6d-a7d5-a58025f58f2a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "\"Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\\n\\nOur Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty. They have done so during periods of prosperity and tranquility. And they have done so in the midst of war and depression; at moments of great strife and great struggle.\\n\\nIt's tempting to look back on these moments and assume that our progress was inevitable, that America was always destined to succeed. But when the Union was turned back at Bull Run and the Allies first landed at Omaha Beach, victory was very much in doubt. When the market crashed on Black Tuesday and civil rights marchers were beaten on Bloody Sunday, the future was anything but certain. These were times that tested the courage of our convictions and the strength of our union. And despite all our divisions and disagreements, our hesitations and our fears, America prevailed because we chose to move forward as one nation and one people.\\n\\nAgain, we are tested. And again, we must answer history's call.\\n\\nOne year ago, I took office amid two wars, an economy\"" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Relation based Node Parser" + ], + "metadata": { + "id": "rpbqXxeaawOt" + } + }, + { + "cell_type": "markdown", + "source": [ + "### Node Parser - Hierarchical" + ], + "metadata": { + "id": "z_HuwzzAoabc" + } + }, + { + "cell_type": "code", + "source": [ + "# HierarchicalNodeParser\n", + "\n", + "from llama_index.core.node_parser import HierarchicalNodeParser\n", + "\n", + "node_parser = HierarchicalNodeParser.from_defaults(chunk_sizes=[512, 254, 128])\n", + "\n", + "nodes = node_parser.get_nodes_from_documents(documents)\n", + "nodes[0].text" + ], + "metadata": { + "id": "qwZFEDlaZpKT", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + }, + "outputId": "12888840-daf5-45f5-f934-e253b6036621" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "\"Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\\n\\nOur Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty. They have done so during periods of prosperity and tranquility. And they have done so in the midst of war and depression; at moments of great strife and great struggle.\\n\\nIt's tempting to look back on these moments and assume that our progress was inevitable, that America was always destined to succeed. But when the Union was turned back at Bull Run and the Allies first landed at Omaha Beach, victory was very much in doubt. When the market crashed on Black Tuesday and civil rights marchers were beaten on Bloody Sunday, the future was anything but certain. These were times that tested the courage of our convictions and the strength of our union. And despite all our divisions and disagreements, our hesitations and our fears, America prevailed because we chose to move forward as one nation and one people.\\n\\nAgain, we are tested. And again, we must answer history's call.\\n\\nOne year ago, I took office amid two wars, an economy rocked by severe recession, a financial system on the verge of collapse and a government deeply in debt. Experts from across the political spectrum warned that if we did not act, we might face a second depression. So we acted immediately and aggressively. And one year later, the worst of the storm has passed.\\n\\nBut the devastation remains. One in 10 Americans still cannot find work. Many businesses have shuttered. Home values have declined. Small towns and rural communities have been hit especially hard. For those who had already known poverty, life has become that much harder.\\n\\nThis recession has also compounded the burdens that America's families have been dealing with for decades -- the burden of working harder and longer for less, of being unable to save enough to retire or help kids with college.\\n\\nSo I know the anxieties that are out there right now. They're not new. These struggles are the reason I ran for president. These struggles are what I've witnessed for years in places like Elkhart, Ind., and Galesburg, Ill. I hear about them in the letters that I read each night.\"" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 19 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Langchain Text Chunking Strategies" + ], + "metadata": { + "id": "64yUhjV_a9dk" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install -qU langchain-text-splitters\n", + "!pip install requests" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8OijyBvqbCLC", + "outputId": "8c5d46c4-0435-4f56-fe50-34c28d7846fd" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m287.5/287.5 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m113.0/113.0 kB\u001b[0m \u001b[31m11.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.0/53.0 kB\u001b[0m \u001b[31m6.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m144.8/144.8 kB\u001b[0m \u001b[31m11.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (2.31.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests) (2024.2.2)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Text Splitting - Character" + ], + "metadata": { + "id": "QVKmz3Rvok9Y" + } + }, + { + "cell_type": "code", + "source": [ + "# Split with Character\n", + "\n", + "with open(\"state_of_the_union.txt\") as f:\n", + " state_of_the_union = f.read()\n", + "\n", + "\n", + "from langchain_text_splitters import CharacterTextSplitter\n", + "\n", + "text_splitter = CharacterTextSplitter(\n", + " separator=\"\\n\\n\",\n", + " chunk_size=1000,\n", + " chunk_overlap=200,\n", + " length_function=len,\n", + " is_separator_regex=False,\n", + ")\n", + "\n", + "texts = text_splitter.create_documents([state_of_the_union])\n", + "print(texts[0].page_content)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "EdjiGEitI4La", + "outputId": "29bb4bfd-e198-4902-e7c0-40c6df7d488b" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "WARNING:langchain_text_splitters.base:Created a chunk of size 1163, which is longer than the specified 1000\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 1015, which is longer than the specified 1000\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\n", + "\n", + "Our Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty. They have done so during periods of prosperity and tranquility. And they have done so in the midst of war and depression; at moments of great strife and great struggle.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Text Splitting - Recursive Character" + ], + "metadata": { + "id": "ivNYVKPZowKh" + } + }, + { + "cell_type": "code", + "source": [ + "# Recursive Split Character\n", + "\n", + "# This is a long document we can split up.\n", + "with open(\"state_of_the_union.txt\") as f:\n", + " state_of_the_union = f.read()\n", + "\n", + "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter(\n", + " # Set a really small chunk size, just to show.\n", + " chunk_size=1000,\n", + " chunk_overlap=100,\n", + " length_function=len,\n", + " is_separator_regex=False,\n", + ")\n", + "\n", + "texts = text_splitter.create_documents([state_of_the_union])\n", + "print(\"Chunk 2: \", texts[1].page_content)\n", + "print(\"Chunk 3: \", texts[2].page_content)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9X6_duxwN3nI", + "outputId": "d6ce1302-1a9a-4887-9505-1c206390ab2f" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Chunk 2: It's tempting to look back on these moments and assume that our progress was inevitable, that America was always destined to succeed. But when the Union was turned back at Bull Run and the Allies first landed at Omaha Beach, victory was very much in doubt. When the market crashed on Black Tuesday and civil rights marchers were beaten on Bloody Sunday, the future was anything but certain. These were times that tested the courage of our convictions and the strength of our union. And despite all our divisions and disagreements, our hesitations and our fears, America prevailed because we chose to move forward as one nation and one people.\n", + "\n", + "Again, we are tested. And again, we must answer history's call.\n", + "Chunk 3: Again, we are tested. And again, we must answer history's call.\n", + "\n", + "One year ago, I took office amid two wars, an economy rocked by severe recession, a financial system on the verge of collapse and a government deeply in debt. Experts from across the political spectrum warned that if we did not act, we might face a second depression. So we acted immediately and aggressively. And one year later, the worst of the storm has passed.\n", + "\n", + "But the devastation remains. One in 10 Americans still cannot find work. Many businesses have shuttered. Home values have declined. Small towns and rural communities have been hit especially hard. For those who had already known poverty, life has become that much harder.\n", + "\n", + "This recession has also compounded the burdens that America's families have been dealing with for decades -- the burden of working harder and longer for less, of being unable to save enough to retire or help kids with college.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Text Splitting - HTML Header" + ], + "metadata": { + "id": "I1nKMkm4o1Ft" + } + }, + { + "cell_type": "code", + "source": [ + "# Split with HTML Tags\n", + "\n", + "from langchain_text_splitters import HTMLHeaderTextSplitter\n", + "import requests\n", + "\n", + "# URL of the website to fetch HTML from\n", + "url = \"https://www.utoronto.ca/\"\n", + "\n", + "# Send a GET request to the URL\n", + "response = requests.get(url)\n", + "if response.status_code == 200:\n", + " html_doc = response.text\n", + "\n", + "headers_to_split_on = [\n", + " (\"h1\", \"Header 1\"),\n", + " (\"h2\", \"Header 2\"),\n", + " (\"h3\", \"Header 3\"),\n", + "]\n", + "\n", + "html_splitter = HTMLHeaderTextSplitter(headers_to_split_on=headers_to_split_on)\n", + "html_header_splits = html_splitter.split_text(html_doc)\n", + "html_header_splits[0].page_content" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "671M7BEVJ5zL", + "outputId": "d6d5df83-98f5-42e5-c50a-de7455a46b93" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Welcome to University of Toronto \\nMain menu tools'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 29 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Text Splitting - Code" + ], + "metadata": { + "id": "y8utGi0No6tr" + } + }, + { + "cell_type": "code", + "source": [ + "# Code Splitting\n", + "\n", + "from langchain_text_splitters import Language, RecursiveCharacterTextSplitter\n", + "\n", + "\n", + "with open(\"app.py\") as f:\n", + " code = f.read()\n", + "\n", + "python_splitter = RecursiveCharacterTextSplitter.from_language(\n", + " language=Language.PYTHON, chunk_size=100, chunk_overlap=0\n", + ")\n", + "python_docs = python_splitter.create_documents([code])\n", + "python_docs[0].page_content" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "9nfbAYj1KGQL", + "outputId": "92edafe3-7d0c-4e20-90ea-5111c565b232" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'from youtube_podcast_download import podcast_audio_retreival'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 33 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Text Splitting - Recursive JSON" + ], + "metadata": { + "id": "tePMloUspEcX" + } + }, + { + "cell_type": "code", + "source": [ + "# Recursive Split Json\n", + "\n", + "from langchain_text_splitters import RecursiveJsonSplitter\n", + "import json\n", + "import requests\n", + "\n", + "json_data = requests.get(\"https://api.smith.langchain.com/openapi.json\").json()\n", + "\n", + "splitter = RecursiveJsonSplitter(max_chunk_size=300)\n", + "json_chunks = splitter.split_json(json_data=json_data)\n", + "json_chunks[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8bW_6wkmMAoR", + "outputId": "73dadc8f-30bc-491f-c3f5-a95e75486971" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'openapi': '3.1.0',\n", + " 'info': {'title': 'LangSmith', 'version': '0.1.0'},\n", + " 'servers': [{'url': 'https://api.smith.langchain.com',\n", + " 'description': 'LangSmith API endpoint.'}]}" + ] + }, + "metadata": {}, + "execution_count": 33 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Semantic Splitting" + ], + "metadata": { + "id": "a8Rt52AepNNk" + } + }, + { + "cell_type": "code", + "source": [ + "# Semantic Chunking\n", + "\n", + "!pip install --quiet langchain_experimental langchain_openai\n", + "\n", + "import os\n", + "from langchain_experimental.text_splitter import SemanticChunker\n", + "from langchain_openai.embeddings import OpenAIEmbeddings\n", + "\n", + "# Add OpenAI API key as environment variable\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-****\"\n", + "\n", + "with open(\"state_of_the_union.txt\") as f:\n", + " state_of_the_union = f.read()\n", + "\n", + "text_splitter = SemanticChunker(OpenAIEmbeddings())\n", + "\n", + "docs = text_splitter.create_documents([state_of_the_union])\n", + "print(docs[0].page_content)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "oHDYFAHeOjPA", + "outputId": "f7a5bbc2-c432-4370-bbf5-e529f4ff8c77" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\n", + "\n", + "Our Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Splitting by Tokens" + ], + "metadata": { + "id": "dV7RMi7_pRWn" + } + }, + { + "cell_type": "code", + "source": [ + "# Splits by Tokens\n", + "\n", + "# Using Tiktoken\n", + "!pip install --upgrade --quiet tiktoken\n", + "\n", + "with open(\"state_of_the_union.txt\") as f:\n", + " state_of_the_union = f.read()\n", + "\n", + "from langchain_text_splitters import CharacterTextSplitter\n", + "\n", + "text_splitter = CharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=100, chunk_overlap=0\n", + ")\n", + "texts = text_splitter.split_text(state_of_the_union)\n", + "\n", + "print(texts[0])" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7_WVw_kEQmJg", + "outputId": "93f501ed-d8a4-4350-a670-a6af25d2879d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "WARNING:langchain_text_splitters.base:Created a chunk of size 123, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 104, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 109, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 106, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 129, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 111, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 118, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 132, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 231, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 177, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 112, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 130, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 116, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 184, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 139, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 112, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 151, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 203, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 138, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 123, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 213, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 134, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 130, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 125, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 139, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 111, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 130, which is longer than the specified 100\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 124, which is longer than the specified 100\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Madame Speaker, Vice President Biden, members of Congress, distinguished guests, and fellow Americans:\n", + "\n", + "Our Constitution declares that from time to time, the president shall give to Congress information about the state of our union. For 220 years, our leaders have fulfilled this duty. They have done so during periods of prosperity and tranquility. And they have done so in the midst of war and depression; at moments of great strife and great struggle.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "vMYrBTIvvGEg" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/tutorials/Langchain-LlamaIndex-Chunking/README.md b/tutorials/Langchain-LlamaIndex-Chunking/README.md new file mode 100644 index 00000000..42549094 --- /dev/null +++ b/tutorials/Langchain-LlamaIndex-Chunking/README.md @@ -0,0 +1,7 @@ +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/tutorials/Langchain-LlamaIndex-Chunking/Langchain_Llamaindex_chunking.ipynb) + +![alt text](../../assets/chunking.png) + +We have comprehensively covered all the chunking techniques available in Langchain and LlamaIndex. + +[Read More in Blog](https://blog.lancedb.com/chunking-techniques-with-langchain-and-llamaindex/) \ No newline at end of file diff --git a/tutorials/Local-RAG-from-Scratch/README.md b/tutorials/Local-RAG-from-Scratch/README.md new file mode 100644 index 00000000..6ca9d41a --- /dev/null +++ b/tutorials/Local-RAG-from-Scratch/README.md @@ -0,0 +1,14 @@ +## Locally RAG from Scratch with Llama3 + +This example demonstrates RAG built from scratch without using any supporting framework like Langchain and LlamaIndex. + +![alt text](<../../assets/RAG-locally.png>) + +This easy to build RAG locally can be done in following steps: + +1. Reading Document and Recursive Text Splitting +2. Setup LanceDB table with schema and LanceDB Embedding API +3. Insert Chunks in LanceDB table +4. Query your question(This step will do semantic search and use Llama3 llm for resulting output) + +**NOTE:** You can change document and query in document both in `rag.py`, Try to run with your custom document with your custom query questions. \ No newline at end of file diff --git a/tutorials/Local-RAG-from-Scratch/lease.txt b/tutorials/Local-RAG-from-Scratch/lease.txt new file mode 100644 index 00000000..3c61558e --- /dev/null +++ b/tutorials/Local-RAG-from-Scratch/lease.txt @@ -0,0 +1,76 @@ +EX-10 2 elmonteleaseforfiling.htm MATERIAL CONTRACT +COMMERCIAL LEASE AGREEMENT + + + +THIS LEASE AGREEMENT is made and entered into on December 1, 2013, by and between Temple CB, LLC, whose address is 4350 Temple City Boulevard, El Monte, California 91731 (hereinafter referred to as "Landlord"), and Okra Energy, Inc., whose address is 4350 Temple City Boulevard, El Monte, California 91731 (hereinafter referred to as "Tenant"). + + + +ARTICLE I - GRANT OF LEASE + + + +Landlord, in consideration of the rents to be paid and the covenants and agreements to be performed and observed by the Tenant, does hereby lease to the Tenant and the Tenant does hereby lease and take from the Landlord the property described in Exhibit "A" attached hereto and by reference made a part hereof (the "Leased Premises"), together with, as part of the parcel, all improvements located thereon. + + + +ARTICLE II - LEASE TERM + + + +Section l. Term of Lease. The term of this Lease shall begin on the Commencement Date, as defined in Section 2 of this Article II, and shall terminate on May 31, 2020 ("the Termination Date"); provided, however, that at the option of Tenant, Tenant may renew this Lease for five additional successive one- year terms at a Monthly Rent of $100,000 per month, provided that notice of such renewal is given in writing no less than 120 days prior to the Termination Date or the expiration of any one-year renewal term. Tenant may at any time cancel this Lease and terminate all of its obligations hereunder by the payment of $300,000, plus all other amounts then due under this Lease. + + + +Section 2. Commencement Date. The "Commencement Date" shall mean December 1, 2013. + + + +ARTICLE III - EXTENSIONS + + + +The parties hereto may elect to extend this Agreement upon such terms and conditions as may be agreed upon in writing and signed by the parties at the time of any such extension. + + + +ARTICLE IV - DETERMINATION OF RENT + + + +Section 1. Monthly Rent: The Tenant agrees to pay the Landlord and the Landlord agrees to accept, during the term hereof, at such place as the Landlord shall from time to time direct by notice to the Tenant, monthly rent of $40,000. + + +Section 2. Late Fee. A late fee in the amount of 5% of the Monthly Rent shall be assessed if payment is not postmarked or received by Landlord on or before the tenth day of each month. + + + +ARTICLE V - SECURITY DEPOSIT + + + +The Tenant has deposited with the Landlord the sum of Twenty Thousand Dollars ($20,000.00) as security for the full and faithful performance by the Tenant of all the terms of this lease required to be performed by the Tenant. Such sum shall be returned to the Tenant after the expiration of this lease, provided the Tenant has fully and faithfully carried out all of its terms. In the event of a bona fide sale of the property of which the leased premises are a part, the Landlord shall have the right to transfer the security to the purchaser to be held under the terms of this lease, and the Landlord shall be released from all liability for the return of such security to the Tenant. + + + +ARTICLE VI - TAXES + + + +Section l. Personal Property Taxes. The Tenant shall be liable for all taxes levied against any leasehold interest of the Tenant or personal property and trade fixtures owned or placed by the Tenant in the Leased Premises. + + + +Section 2. Real Estate Taxes. During the continuance of this lease Landlord shall deliver to Tenant a copy of any real estate taxes and assessments against the Leased Property. From and after the Commencement Date, the Tenant shall pay to Landlord not later than twenty-one (21) days after the day on which the same may become initially due, all real estate taxes and assessments applicable to the Leased Premises, together with any interest and penalties lawfully imposed thereon as a result of Tenant's late payment thereof, which shall be levied upon the Leased Premises during the term of this Lease. + + + +Section 3. Contest of Taxes. The Tenant, at its own cost and expense, may, if it shall in good faith so desire, contest by appropriate proceedings the amount of any personal or real property tax. The Tenant may, if it shall so desire, endeavor at any time or times, by appropriate proceedings, to obtain a reduction in the assessed valuation of the Leased Premises for tax purposes. In any such event, if the Landlord agrees, at the request of the Tenant, to join with the Tenant at Tenant's expense in said proceedings and the Landlord agrees to sign and deliver such papers and instruments as may be necessary to prosecute such proceedings, the Tenant shall have the right to contest the amount of any such tax and the Tenant shall have the right to withhold payment of any such tax, if the statute under which the Tenant is contesting such tax so permits. + + + +Section 4. Payment of Ordinary Assessments. The Tenant shall pay all assessments, ordinary and extraordinary, attributable to or against the Leased Premises not later than twenty-one (21) days after the day on which the same became initially due. The Tenant may take the benefit of any law allowing assessments to be paid in installments and in such event the Tenant shall only be liable for such installments of assessments due during the term hereof. + + + diff --git a/tutorials/Local-RAG-from-Scratch/rag.py b/tutorials/Local-RAG-from-Scratch/rag.py new file mode 100644 index 00000000..c55df8e9 --- /dev/null +++ b/tutorials/Local-RAG-from-Scratch/rag.py @@ -0,0 +1,111 @@ +import nltk +import pandas as pd + +nltk.download("punkt") +import re +import ollama + +# lancedb imports for embedding api +import lancedb +from lancedb.embeddings import get_registry +from lancedb.pydantic import LanceModel, Vector + + +# Recursive Text Splitter +def recursive_text_splitter(text, max_chunk_length=1000, overlap=100): + """ + Helper function for chunking text recursively + """ + # Initialize result + result = [] + + current_chunk_count = 0 + separator = ["\n", " "] + _splits = re.split(f"({separator})", text) + splits = [_splits[i] + _splits[i + 1] for i in range(1, len(_splits), 2)] + + for i in range(len(splits)): + if current_chunk_count != 0: + chunk = "".join( + splits[ + current_chunk_count + - overlap : current_chunk_count + + max_chunk_length + ] + ) + else: + chunk = "".join(splits[0:max_chunk_length]) + + if len(chunk) > 0: + result.append("".join(chunk)) + current_chunk_count += max_chunk_length + + return result + + +# define schema for table with embedding api + +model = get_registry().get("colbert").create(name="colbert-ir/colbertv2.0") + + +class TextModel(LanceModel): + text: str = model.SourceField() + vector: Vector(model.ndims()) = model.VectorField() + + +# add in vector db +def lanceDBConnection(df): + """ + LanceDB insertion + """ + db = lancedb.connect("/tmp/lancedb") + table = db.create_table( + "scratch", + schema=TextModel, + mode="overwrite", + ) + table.add(df) + return table + + +# Read Document +with open("lease.txt", "r") as file: + text_data = file.read() + +# Split the text using the recursive character text splitter +chunks = recursive_text_splitter(text_data, max_chunk_length=100, overlap=10) +df = pd.DataFrame({"text": chunks}) +table = lanceDBConnection(df) + +# Query Question +k = 5 +question = "When this lease document was created?" + +# Semantic Search +result = table.search(question).limit(5).to_list() +context = [r["text"] for r in result] + +# Context Prompt +base_prompt = """You are an AI assistant. Your task is to understand the user question, and provide an answer using the provided contexts. Every answer you generate should have citations in this pattern "Answer [position].", for example: "Earth is round [1][2].," if it's relevant. +Your answers are correct, high-quality, and written by an domain expert. If the provided context does not contain the answer, simply state, "The provided context does not have the answer." + +User question: {} + +Contexts: +{} +""" + +# llm +prompt = f"{base_prompt.format(question, context)}" + +response = ollama.chat( + model="llama3", + messages=[ + { + "role": "system", + "content": prompt, + }, + ], +) + +print(response["message"]["content"]) diff --git a/tutorials/Local-RAG-from-Scratch/requirments.txt b/tutorials/Local-RAG-from-Scratch/requirments.txt new file mode 100644 index 00000000..eaf8317a --- /dev/null +++ b/tutorials/Local-RAG-from-Scratch/requirments.txt @@ -0,0 +1,4 @@ +ollama +nltk +pandas +lancedb \ No newline at end of file diff --git a/tutorials/RAG-from-Scratch/RAG_from_Scratch.ipynb b/tutorials/RAG-from-Scratch/RAG_from_Scratch.ipynb new file mode 100644 index 00000000..3eb81d46 --- /dev/null +++ b/tutorials/RAG-from-Scratch/RAG_from_Scratch.ipynb @@ -0,0 +1,2341 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "e4c6e5d0090e436cb885385e8e68f357": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_35d8e64a2e674ed3959626670ff09853", + "IPY_MODEL_dc4a003d97de4b37a141257473a3b59a", + "IPY_MODEL_0d02407716aa4837860a2ff0ad882ac1" + ], + "layout": "IPY_MODEL_68a3d158238e4896a7943fccd549dbd5" + } + }, + "35d8e64a2e674ed3959626670ff09853": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4ca5db02add34e33ad9b3ba0e87a9d26", + "placeholder": "​", + "style": "IPY_MODEL_ee33d0cd81234d94847d2b8c6535ee39", + "value": "tokenizer_config.json: 100%" + } + }, + "dc4a003d97de4b37a141257473a3b59a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9e91359e22d7489c8f1701ba6dbb7787", + "max": 48, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3c9f94e4b37f4147948be5b0eb5242db", + "value": 48 + } + }, + "0d02407716aa4837860a2ff0ad882ac1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_eb22c54b877f4c33b96c403f0e596518", + "placeholder": "​", + "style": "IPY_MODEL_0aab614b9920447bbd7d67de4f3485e7", + "value": " 48.0/48.0 [00:00<00:00, 2.72kB/s]" + } + }, + "68a3d158238e4896a7943fccd549dbd5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4ca5db02add34e33ad9b3ba0e87a9d26": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ee33d0cd81234d94847d2b8c6535ee39": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9e91359e22d7489c8f1701ba6dbb7787": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3c9f94e4b37f4147948be5b0eb5242db": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "eb22c54b877f4c33b96c403f0e596518": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0aab614b9920447bbd7d67de4f3485e7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4bee37ac3b7d4c78b4ba060a81db0058": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_164b86b6d6694aff95e1266a1885efbd", + "IPY_MODEL_afbcb78432e0404a999a4d51261bfa85", + "IPY_MODEL_3e781910d0fd45469b4bbc69b148504f" + ], + "layout": "IPY_MODEL_19d74cef120a496298393b06d6715e32" + } + }, + "164b86b6d6694aff95e1266a1885efbd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_745947ded8144803aeeebe36eb40c4c4", + "placeholder": "​", + "style": "IPY_MODEL_2bdc1e2bd613491b9342420e87b50b54", + "value": "config.json: 100%" + } + }, + "afbcb78432e0404a999a4d51261bfa85": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bcc9786aa0514c7a876a8065de0f5fdb", + "max": 570, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8d3450b98af642f4822158194cf4a503", + "value": 570 + } + }, + "3e781910d0fd45469b4bbc69b148504f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6f0f67e242da46f8959dd88bfad3a49c", + "placeholder": "​", + "style": "IPY_MODEL_82d1f9c1f8374747b44b09575a780a7b", + "value": " 570/570 [00:00<00:00, 32.2kB/s]" + } + }, + "19d74cef120a496298393b06d6715e32": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "745947ded8144803aeeebe36eb40c4c4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2bdc1e2bd613491b9342420e87b50b54": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bcc9786aa0514c7a876a8065de0f5fdb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8d3450b98af642f4822158194cf4a503": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "6f0f67e242da46f8959dd88bfad3a49c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "82d1f9c1f8374747b44b09575a780a7b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "284ffc0c8c264984a5f495080f791eca": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_a4d33c5d7797493eba3cf066d3e8451d", + "IPY_MODEL_85d075b7d8a84a1794f929ddf16f11e2", + "IPY_MODEL_88970a7bcaff461f801efd843ee4a8db" + ], + "layout": "IPY_MODEL_ff3be2d8cecd49a0aba64264e6869f26" + } + }, + "a4d33c5d7797493eba3cf066d3e8451d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e3631128e4be4a11bdf0ebcaf2993f61", + "placeholder": "​", + "style": "IPY_MODEL_55d3c015ec2e4ee185590601a1cf8d4e", + "value": "vocab.txt: 100%" + } + }, + "85d075b7d8a84a1794f929ddf16f11e2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7b82144162044815b6a060fde1518904", + "max": 231508, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_999d4b0010904b189713b60fe1209842", + "value": 231508 + } + }, + "88970a7bcaff461f801efd843ee4a8db": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0a29a69c9008437082e94cfbd5d689a0", + "placeholder": "​", + "style": "IPY_MODEL_7366b19dc1e0421a82d6dd579435137d", + "value": " 232k/232k [00:00<00:00, 4.02MB/s]" + } + }, + "ff3be2d8cecd49a0aba64264e6869f26": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e3631128e4be4a11bdf0ebcaf2993f61": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "55d3c015ec2e4ee185590601a1cf8d4e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7b82144162044815b6a060fde1518904": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "999d4b0010904b189713b60fe1209842": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "0a29a69c9008437082e94cfbd5d689a0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7366b19dc1e0421a82d6dd579435137d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "36955454f0bf46ce92b0fa77dea2a07a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_364885da6664490bbe1541043b9178e4", + "IPY_MODEL_d43d8a93a4904b40ab4d308ab285cf02", + "IPY_MODEL_b893410f3edc40af8e0863df97c86ae5" + ], + "layout": "IPY_MODEL_b8ad205864b64f1daae7604f0ba08133" + } + }, + "364885da6664490bbe1541043b9178e4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_54186ef93d90443dbcf3e722565d4096", + "placeholder": "​", + "style": "IPY_MODEL_55a5f7deeab14d1cacd1fa04be22b95d", + "value": "tokenizer.json: 100%" + } + }, + "d43d8a93a4904b40ab4d308ab285cf02": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_118cf8575e6c4952b3b33ea4ec1a1e9b", + "max": 466062, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_5a5c3c397dd44d478249c0295a16f238", + "value": 466062 + } + }, + "b893410f3edc40af8e0863df97c86ae5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c38ed191048e4a328ff591d133371e3c", + "placeholder": "​", + "style": "IPY_MODEL_c86cdc05d3db41a1904d7aafd03eeab3", + "value": " 466k/466k [00:00<00:00, 25.3MB/s]" + } + }, + "b8ad205864b64f1daae7604f0ba08133": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "54186ef93d90443dbcf3e722565d4096": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "55a5f7deeab14d1cacd1fa04be22b95d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "118cf8575e6c4952b3b33ea4ec1a1e9b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5a5c3c397dd44d478249c0295a16f238": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c38ed191048e4a328ff591d133371e3c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c86cdc05d3db41a1904d7aafd03eeab3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e56605bc1f084f5994509839b10e85b3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_83d2c50e80744755b572a3022a3a6f2f", + "IPY_MODEL_6db50c93fc764ac093829a76070e7c62", + "IPY_MODEL_38d9c91b5d0b4a509058886d039a217f" + ], + "layout": "IPY_MODEL_be79d8c5fb464923941a29955f261235" + } + }, + "83d2c50e80744755b572a3022a3a6f2f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f690a39dd19e4a8a95ab61b3d33e07a7", + "placeholder": "​", + "style": "IPY_MODEL_9dd411b76d1045ea9e3e887d265580ab", + "value": "model.safetensors: 100%" + } + }, + "6db50c93fc764ac093829a76070e7c62": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_321776a1a0b34e4c8134cbec97e5d88a", + "max": 440449768, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1901462b19d448288b696a55d337a228", + "value": 440449768 + } + }, + "38d9c91b5d0b4a509058886d039a217f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_eb9e260e53964c71a21f3ce0622394e6", + "placeholder": "​", + "style": "IPY_MODEL_27713d358d9347259c6ffee8acfd3a92", + "value": " 440M/440M [00:02<00:00, 202MB/s]" + } + }, + "be79d8c5fb464923941a29955f261235": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f690a39dd19e4a8a95ab61b3d33e07a7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9dd411b76d1045ea9e3e887d265580ab": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "321776a1a0b34e4c8134cbec97e5d88a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1901462b19d448288b696a55d337a228": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "eb9e260e53964c71a21f3ce0622394e6": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "27713d358d9347259c6ffee8acfd3a92": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Retrieval-Augmented Generation(RAG) from Scratch" + ], + "metadata": { + "id": "CVjHcUsRyM7I" + } + }, + { + "cell_type": "markdown", + "source": [ + "In this notebook, we will build a Retrieval-Augmented Generation(RAG) pipeline from scratch without using any popular libraries such as Langchain or Llamaindex.\n", + "\n", + "RAG is a technique that retrieves related documents to the user's question, combines them with LLM-base prompt, and sends them to LLMs like GPT to produce more factually accurate generation." + ], + "metadata": { + "id": "WjJnK8VHx4r1" + } + }, + { + "cell_type": "markdown", + "source": [ + "Lets Split RAG Pipeline into 5 parts:\n", + "\n", + "1. Data loading\n", + "2. Chunking and Embedding\n", + "3. Vector Store\n", + "4. Retrieval & Prompt preparation\n", + "5. Answer Generation" + ], + "metadata": { + "id": "pvGgyVYb7JNs" + } + }, + { + "cell_type": "markdown", + "source": [ + "Here is an image illustrating the RAG process\n", + "\n", + "![flow](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7QAAAHXCAYAAACMOBZzAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAxdEVYdENyZWF0aW9uIFRpbWUAV2VkbmVzZGF5IDA2IE1hcmNoIDIwMjQgMDQ6NTY6MjUgQU3Mo45PAAAgAElEQVR4nOzde3zO9f/H8cd17XTtkMOYOWyY8xySQ1ihlKJIIqFCfcvoJEpKkkRFqSn9YvgWohDKmUQOOaVyzGkOY21sGGabbdd1fa7fH+PKvqilbZ+N5/12223zOV2vz2dr7Xm9TxaXy+VCREREREREpIixml2AiIiIiIiIyLVQoBUREREREZEiSYFWREREREREiiQFWhERERERESmSFGhFRERERESkSFKgFRERERERkSJJgVZERERERESKJAVaERERERERKZIUaEVERERERKRIUqAVERERERGRIkmBVkRERERERIokBVoREREREREpkhRoRUREREREpEhSoBUREREREZEiSYFWREREREREiiQFWhERERERESmSFGhFRERERESkSFKgFRERERERkSJJgVZERERERESKJAVaERERERERKZIUaEVERERERKRIUqAVERERERGRIkmBVkRERERERIokBVoREREREREpkhRoRUREREREpEhSoBUREREREZEiSYFWREREREREiiQFWhERERERESmSFGhFRERERESkSFKgFRERERERkSJJgVZERERERESKJAVaERERERERKZIUaEVERERERKRIUqAVERERERGRIkmBVkRERERERIokBVoREREREREpkhRoRUREREREpEhSoBUREREREZEiSYFWREREREREiiQFWhERERERESmSFGhFRERERESkSFKgFRERERERkSJJgVZERERERESKJAVaERERERERKZIUaEVERERERKRI8jS7ABERERGRv7N69WoWLFjA1q1b+f333/Hx8SEiIoLatWvzyCOPULt2bbNLFBETWFwul8vsIkREREREruaVV15hzJgxf3nMoEGDGD16dAFVJCKFhboci4iIiEih5HAYhIZWZMyYMQSVKcOw4SNISkrC5XLhcrmIiYlh2LBh2Gw23n//fTp3ftjskkWkgKmFVkREREQKpSZNmrBlyxaGDRvGI10fJcuwUKzYTVQJLZvjuB/Xrqf3U09y8EAMXbp0Yfbs2SZVLCIFTYFWRERERAqdt956i+HDh9O8eXPWrVsHQFpaOgePHsfX5k31sBAATiWf5eixJELKBVGvdi0SExNZtmwZbdq0MbN8ESkg6nIsIiIiIoXO7t27AXKMnfX396N2zcpk2e38vj+W1LR04o6foEypEgQFlmDgwIEA7Nixw5SaRaTgKdCKiIiISKGzceNGAJo2bZpju6fVSp0aYXh4WIk5Eo+vnzcVygYB0LhxYwA2bNhQsMWKiGkUaEVERESkyHE6DawWC5kZds6kpObY5+XlZVJVIlLQFGhFREREpNCJiIgA4Ndff71s354DRzAMg/rh1ShZLIDYuOMcTUhk69atAFSvXr1AaxUR83iaXcD17IuZ3/LZh++SmpaOb0Ax0s9nkJGRSWZWFnaHA8eFD8PpxGK1ABYslgufrVYsFgtWqwcWqwUPDw88PTzITDtHscBSeHl64OXhgQUXfn5+eHt54OPlxamUNFzBtYgc/hkvNPYz+xGIiIiIXJPatWsDMHLkSL799lv39gOx8TicTurVqgJAaPlgsFjZsXM3H370EQAtWrQo+IJFxBSa5TgfbNmyhV5P9WHPru14FyuNT+kQfEuH4uF7Ex4+fli9ffHw9sXq44uHl43Ms0nYAivgwgDDictp4DLsuBwODKcDl9OOy2HHcNo5d3gH/hWqYzjsuJx2nBmpWKyeGM6sC8fbSTu6C0/fYqzftodbgtXlRkRERIqmTp068e233zJ06FDefvttjiYkciYllRpVQrF5e+c4tsODHVm4YD4PPtiR77779ipXFJHrjQJtPujatSvzFy/j5sHzCQirb0oNq3sE8emM+TzbrZ0pry8iIiLybx08eJD27R9g79493NumLXfcdQ+PdOlMtbBKAMTGxrJ69WqmTp3K6tWrebBjR777VmFW5EaiQJsPwsLCSDxvodlHl4/5KCjHxnbkpd6P07t3b9NqEBEREfm3du/ezaBBg1i8ePFfHte1a1c+/PBDKlSoUECViUhhoDG0+aBUqVKkZZo3ftXltLPv15/osHC2aTWIiIiI5AU/Pz+CgoLw9PTE4XBc8Zhu3boxcOBAhVmRG5BmOc4Hfn5++N5UzLTXd6SdxWq1XvWXvoiIiEhRMGXKFFq1asWUKVOoU6cOr7/+Olu3buX06dNs3bqV6OhoGjVqxMyZM2ncuDFvvPGG2SWLSAFTl+N8UKVKFZIzoOEYc7ocuwwna58ox6GDB6hUqZIpNYiIiIj8G4NefZUP3n8fgEe6P0b//gNp0uhmPDxytsc4HAYj3h3F28OGAHDrrbfy888/F3i9ImIOtdDmg6ysLDIz0k17fYvVA6vFiq+vr2k1iIiIiFyryMhId5idOnUqs76aTqmgUuyOiSUtPSPHsfsOHeHxHj345ZdfgOzVJoKCggq8ZhExhwJtHjhw4ADbt28nPT07xGZkZHBTjWaXHecynKQe/R17ysncXdjlwuV04MxI/cc1OZ2OHGu2iYiIiBQFXbt2ZdKkSQBs2rSJnj17AlAjLJQAP19iYv8g+XQKAHsPHcVitVA9LJRGjRqRlpYGwMmTJ4mMjDTnBkSkQKnL8TXYs2cPS5cuZfbs2WzevPmarmHx8MRq9cTq44vLMLB6eWNkZeByucBlwMVvi8WCrXQoGSfjsHh6Y/X0wuLhhdXTG4uHJxYPLyyeXlitHlg8PHFmnSfz5B840lOoV68u27dvz8M7FxEREck/kyZNcgfRU6dOERgYeNkxfxw/wYlTp/H28sJwQb2aYTn2r1y5ktatWwPwxhtvMGLEiPwvXERMo0CbS9u2beOjjz5i1apVxMfH58k1LVZP/Ks0w8PbD5fTDrgAFy7DAMOJy+UEw4kz4xxWTxu4XBgY2YHXcOEynGABMLLzr+HA5XRgsVjxsPlx/tg+jhw5QmhoaJ7UKyIiIpJfEhISuP3224mNjWXDhg1ERERc9dg9B46QkWmnRDE/wkLLX7Z/9OjRvPbaa0B2K2/Tpk3zrW4RMZeW7cmFP/74gyZNmmC32wHw8LLhXbEVXqVqYQtpjtVW4rJzXM4snOlJGOeT/2xtvcDISiF151QcZw6TmXiAas8twurpk+d17xvVgIyMjL8/UERERMRko0aNIjY2lp5PPsXNN9e/6nEJSafIzLRTrkwgiSeTORAbT7XKOZfrefXVV9nyy6/MnfMNn332mQKtyHVMLbS5MGfOHLp06QKAxepFqbbj8SwR9jdn/TVn+glOLuyFy5lJycZPUL7ty3lRqpthP8/BqOacPn0aPz/z1sQVERER+TvHjh0jPDycZs2a8dmkL0hJSSW0XDClAnMug5h85ixH45MoV6Y0wUElycqyExP7B1arlfBqf67skHz6LKvWruepnt1JSUlh1apVtGrVqqBvS0QKgCaFygWn0+n+2lbxjmsKs60blCZuWit2fNYcAA+/IPzDHwHgzG/TSUuIyZtiL7B62XA6nfj45H3Lr4iIiEheWrBgAWfPnqVly5ZUCS1HUKmSHD2WyMGjCe5jzp1LIy7hBIElixEcVBIAb28v6tQIw+VysX3vQbLsDrIcDuIST1L/5psZMiR7KZ/PPvvMlPsSkfynQJsLt9xyi/trn9DsQFou0IctH9/GFy/Vy9U1+t4fiqeHhVLFvPC0Zj92vxoPgsUDl+EgNTZv16w17JkYhoEa4EVERKSwW7BgAQAtWrQAoELZ0pQpVYJzqenExh3DMAxiExLx8famYvngy86vXb0yvj7e7D1whD0xR/D18aZ6WAiDBg3ijjvuYM6cOSxevLhA70lECoYCbS7UrFkTq9WKxeqFT/nsMRijnqxJSGkbbRrmbp2zhlWzu8ys2p6MwzAAsNpKYrsQkP1KX/7L+d8wstLx9vbm7NmzeXpdERERkbyUmZnJTz/9RMWKFd2BFqBC2SCqVizP2XNp7Nh7CG8vT2pVq3jV69QIy54E0+UyKFnsz67KFyeHmjJlSv7cgIiYSoE2F1JSUjAMA4tPMSwe3gAE2Dxyff7jd5XH18cDlwsGTtqTY59HQFkgO4DmJUfaSZxOJ97e3nl6XREREZG8tHHjRlJSUmjevPll+24K8MPHxxMLl82xeZmY2HgsVitlSpXkj+NJHElIAqBt27Y88cQTzJkzR8sZilyHFGhz4dixYwBYPG3ubSdT7Lk+v3/HygBsP5xC4pmsHPssntkTNjnP521Lqk+JClitVk6cOJGn1xURERHJS5s2bQK4YqA9FJdApt1J3ZpVcAE79x0mIyvrsuOOxidy/nwGNauEUj64NGWCSnL6TAoHYrOXWuzatSsAs2bNyr8bERFTKNDmQkJC9oQElwbaycvjrnjspqgIDn5+B3627BWRygX6UKFU9nmjZh26/ASLBQBHWjKOtGQMewaG/Xz2R1Y6RlYaRlYa9nNJuFxGrmv2sgXgcDgoUeLyJYVERERECouNGzcClwfaI/HHSU09T7WKFfDwsBJetSI2H2/2HzxKyrm0S45LIvlsCpVDy+Ltlf33V4UypakcUpa0jAz2HjxK27ZtCQ+vzaxZszh//nzB3ZyI5DutQ5sLF2c5tnr6urdtP3TusuPuvqUUlcpkH9P+1iBmrzvG4K5VATiT5mDNruTLL+7IBODET9Gc+Cn6L6qwAFfoa2OxYMGS/dly8bMVF1YMwyA5OZnAwMDc3aiIiIhIAdu3bx82mw1bwJ9vwiedOs3pM6mULVMSf78/GxSqV67AkfjjHIpLoHxwEJ4eHiSfPUuZkiUpFuCf47oligVQLMCP32Ni2bXvEG3ub8/YD99n3rx5PPbYYwV2fyKSvxRoc6Fkyeyp4S2XBNosh4HhcmG1WPC0WnEYBq9fCK8AWU4Db08rHSOyJ3uas+74Fa/tcmYHWu+g2gRUvA2r1QOrxYLF4sLT04rVAs60U/gUK40VsOAEpx2nI5O0k4fwL1kOw5GF4bTjtGdiODKzv3ZkkRy3k3PnLg/eIiIiIoXFkSNHqFKlCplZDvbEHKF82dIkJJ4iOCiQskGXvylfqUJZvLy8iD+ePawqKLA4FcqVvuK1rVYrYSHBHIhNoMODnRn74fssXbpUgVbkOqJAmws2W/Y7gy7DkWO73eHCx8tC01rFCfD1oHbFAPe+0yl2hj9eDS8PC07DxXvfXKG78SXX9ChWCe+a3XPsc174ALhS5xhrlatsv/Dht+AhUlJS/v4GRURERExw/PhxMjIyqFatGnVrhrEn5giHjyZQ7CY/ypW5eg+z4FIlSTp5BpfLID3j8jG1l4r9IxEvLy8qVCjHTcWKsWTJkry+DRExkcbQ5kJAQHZQNbJyhsPzWdljWiPCS/DZc3Vy7Dubbqf7neUBWPRzEukZOcPwRS5HxoUvcj8+NrcyMtJJSkrK8+uKiIiI5IXY2FgAqlbN7uVmdzqwWi2cS8vgRPKZq5639+BRvLw8qFKxHJmZWeyOib3ycQeO4mH1oE6NytSoEkrp0qU5ffo0q1evzuM7ERGzKNDmgr9/9pgMI/1Uju2p57ND6ksPheHn48GvMWdJSc/eNnNwA3y8rDicLgZO3nfVa1/scmyxeuVt0Rfmtg8Kyt06uSIiIiIF7dJAu/fAETw9Pbg5vBq+Nh/+OH6Co/GJl52z50As4KJO9coUvymA8OqVceFi577DOY7be+AIDqeD8OqV3NvKlc1eLrFOnZwNESJSdCnQ5oK7hTbzLFzS7djTI3uGYosFks/Z6fj2Vn6JyV5+p7hfdm/uj+fHuoPvX7F4+f/tMf+Ey8jCYrG6u0uLiIiIFDYXA61vQHEchkHtapUBqBEWQumSJTh15hxHE/4MtQePJGB3OAm/cByAp4eVOtXD8Pb2ZMfeg6SfP8/ho8fIcjipVinEfdyOHTvYsGEDVatW1Rv+ItcRBdpc+DMU5pxlOO5EdnfhDLtB26FbcBgGz332OyfOZo/l2HH4HGPm5ny38H9ZPHwA8PC78mQG18rITMHL2wdfX9+/P1hERETEBEeOHAGgTLny1KgSmmNfaLkgKlUIIvnMOQ7ExhOXkMi51DSqVw7BarVcdq2aYaH4+/my/3A8ySnnqFQhGJvNG4Bff/2VV155BYCHHnoon+9KRAqSJoXKhczMTDw8PLDaSoL1z0f28DtbaduoNKt2JLtbYc+kOrj52Z+oUcGf/fFpV7ukm4dvKSDnGrd5wWorSWZGulpoRUREpNC62EJ7x+1N8fa8/M/SwBLF8fb24WDsH6SkGlQOKYevzeeq1ytZzJ/4hGMkJMSz87fNpJ1LYceOHUycOBGApk2b8sEHH+TLvYiIORRoc+H333/H6XRSrmx5Lu08nOUwWLD5ypMu5SbMAlh9s2fwy0raiW/V+/9tqW4Wqye4IDn5CmvfioiIiBQCGzZsBKBYQMBl+zw9PbHZbPj4+ODp6YW3jw82m43ixW7CZrNhGAbp6emkpaWRnp5OamoqaWlpOByXD/W688476dKlC126dMn3exKRgqVA+w94GOk4cAGXd3O5Fpnxm0jdOQ3IucZtnrFY8PLK48mmRERERPJIeO3abN608Yr7HA4HqamppKamXnG/h4cHfn5+7o+QkBA8Pb0oWbIE9erVo06dOtSoUYPq1asTEhJyxWuISNFncblcrr8/7MaWkZFB+fLlOX36NOHNOnCiZHs8S1a95uvZk/dx7rdospK2u7d5FquY3aXZZeAyMnE5MrF4+pM9btfA5QILLlz2dPD0yV7mx2XgchngzMJlOLFYPXE5M7BYvfHy8iLjbDyHDh0iLCzs3z8EERERERGRQkaBNpc++eQTXnzxRfe/rbZAfMo2xKdCM7B64bKn4bKnYdjTc6wpa/HwwbN4pQstsC7Ox/7A+YPLyDHBlMXjz1mOXQ6yW4At2d2GL7YGWwCsWLz8sXoFgNUj+zyLR/bSPy4nFp+SGJnJYDgxUg7SuXNnZs+ena/PRURERERExCwKtP/AN998w7hx41i3bl3eXNDqiS30bnxCW2Px8M6ba16QuuEVFi1cQJs2bfL0uiIiIiIiIoWFxtD+AxcnEzhx4gRr164l6r8LsKYdwcNq4dQ5OyfPZpGa4SDT/mcLLYYLl8sJhhOXy4nF0x8Pv2CsvmXwLFENq0+JfKnVMAz8/Pzy5doiIiIiIiKFgVpo80Gb+zuwZms8vuFPg2E3pYbUjYP57NOx9O7d25TXFxERERERyW9Wswu4HtWuWRX72TjTwiyAw55J7dq1TXt9ERERERGR/KZAmw8SExOxeJrb3dfb5k9mZqapNYiIiIiIiOQnBdp8sGLFCqw+xUytwZ6Ryv79+02tQUREREREJD8p0OYDPz8/QkIrm/LaLsd5Mo4sx8vHF6fTaUoNIiIiIv9UixYtLnszvnnz5qxYscKkikSkKNCkUPmgV69efDt/EanpdixWC1afkmD1xmL1wuVyYPEKyF5W1mLFZTgBV/batS4nLpeBK+ssFk9/cDkvbHdh2FOz15318MpewtYCLmcWFg9vXI4MLJ42MOy4HJm4XA6qVqlCzN4d5j4IERERkVyIi4ujcuXKnDhxgsDAQPf20NBQ2rRpw+TJk/O9hpo1a5KZmUl4eDgRERHUrVuXunXrUqNGjXx/bRG5dlq2Jx9MnTqVCsM/ZPr8jdyUFUOtmjVJPnOWc6npnDp1EpclC4fDIMvuwOF04XS5ACuGCwyXBYfVAh6egBfe3tkfZNnwsdkoXrI0Nh8vbN6enE87Q9ngsqScPUnFkFBsPh6cO++kcs3GvDGgh9mPQURERCRXPvroI0JCQnKEWYD09HQCAgL48ssviYqKYu/evWRlZZGVlYXVmt3RcNKkSfTv3x+73c5LL73EqFGjmDdvHt27d8dut1OpUiVWrVpFWFjY39bhcrnYvXs3u3fvdm/z9vZ2h9t69epRs2ZNatasic1my9uHICLXRC20IiIiImKqDh06cPbsWdasWePedubMGQIDA5k1axZdu3bF29ubyZMnc/fdd1OuXDkA1qxZw1133cXLL7+Mh4cHY8eO5fz585QqVYpq1aoxcuRIpk+fTnJyMgsXLvzLGhITE2nXrh0nTpwAsoeQ+fv7u/99KYvF4g654eHh7pBbsmTJPHwqIpIbCrQiIiIiYqru3buzZ88etm3b5t726KOPMnfuXDIzMxk8eDBjxoyhZMmS/Pe//+WBBx4AoFatWsTExODl5YXdbqdx48Zs3rwZq9XKxo0badq06T+q4+eff6ZXr16kp6djsVhwuVw0adKEu+++G19fX/bv309MTAz79+/n9OnTl50fHh7uDri1atWiZs2a7vAtIvlDgVZERERETLVr1y7q16/PhAkT6NChAwMGDGDmzJmMHz+ePn36AJCamkqPHj1YsGABTZo0YePGjdhsNtavX8/y5csxDIM33ngDyG5BXbp0KW3btv3HtXzzzTcMHDgQgNatW/PDDz8A2QE7MjLS3XX50KFD7Nu3jz179rBv3z7279/PoUOHLrteWFiYO9x26dKFkJCQa3pGInJlCrQiIiIikuc+//xzJkyYQPfu3RkwYMDfHj9gwAA++eQTDMOgRIkSfPDBBzz99NMAdOvWjdOnT/PBBx9gtVpp1KgRTz75JFOnTmXQoEEMHz48x7X8/f1Zvnw5zZs3v6bax4wZw7hx46hVqxZPP/000dHRxMTEUKpUKSIjI4mMjHSP4b1Uenq6O+ReDLp79uwhJSUFgJkzZxIREXFNNYnIlSnQioiIiEie2bNnD1FRUSxfvhyAESNG0LNnz1yfbxjGZWFx06ZNdOnShfj4eFwuF/7+/kyfPp0pU6awaNEipk2bRosWLejbty8rV64kIyPjX99Hv379mD9/Pl27dmXIkCFER0czYcIEnE4nDRo0oE+fPtx33325ulZ8fDxHjx5VmBXJBwq0IiIiIpInpkyZQlRUFGfOnKFy5coMHz6cO++8M99ezzAMWrZsycaNGwEIDAykc+fOTJgw4V9fOzU1lccff5ytW7cyatQounfvzrZt2xg/fjzLli0DoGPHjvTp04fatWv/69cTkWujQCsiIiIi/8q+ffuIiopi6dKlADzxxBOXdQMuinbt2kWPHj1ITk5m2rRp3HHHHQDMnTuX6Oho9u3bh6+vL5GRkfTp0wd/f3+TKxa58SjQioiIiMg1mzZtGlFRUSQnJ1OlShWGDRuWr62yBW3hwoU8//zzAKxcuZJq1aoBcO7cOSZMmMCECRNwOBzUqlWLyMhIOnfubGa5IjccBVoRERER+cdiYmKIiopi8eLFwPXTKnsl48aNY8yYMVSsWJFly5blaIndtm0b0dHRLFmyBIA2bdoQGRlJ48aNzSpX5Ibi8dZbb71ldhEiIiIiUnR8+eWXvPzyy2zfvp3q1asTFRXFk08+aXZZ+aZp06YkJCSwYcMG4uLiuP/++937ypYtS/v27alcuTKxsbFs3ryZ2bNnk5aWRnh4uLohi+QztdAWUgMHDmTv3r0sWrTI7FJEREREADh48CBRUVEsXLgQuL5bZf+Xy+Wia9eubN68mRdeeMG9Vu2l0tLSGD9+PNHR0WRlZVGxYkUiIyPp0aOHCRWL3BgUaAupTp06sX37dg4ePGh2KSIiIiLMmDGDqKgoTpw4QXh4OK+99tp1NVY2Nw4dOkT37t05fvw47777Lo899tgVj9uxYwfR0dHuhokWLVoQGRlJy5YtC7JckRuCAm0hdd999xEbG8uePXvMLkVERERuYIcOHWLs2LHMnz8fgKeeeoo333zT5KrM8+OPP/LEE08AMHXq1L8M9fPnz2f8+PHuv+cef/xxIiMjqVSpUgFUKnJjUKAtpO68805Onz7N9u3bzS5FREREblBff/01UVFRJCYmUq9ePQYOHHjDtcpeyRdffMFbb71FqVKl+Prrr6lZs+ZVj01PT2fChAlER0eTkZFB6dKl6dOnD5GRkQVYscj1S4G2kGrSpAkul4stW7aYXYqIiIgUUWPHjgWgf//+/+i82NhYoqKi+O677wCIjIxkyJAheV5fUTZs2DCmTJlCkyZN+OKLLwgICPjL43ft2kV0dDQLFiwAoHHjxvTp04d77723IMoVuW4p0BZSdevWpXjx4qxfv97sUkRERKQImj9/Pv369QPgyJEjuT5v1qxZREVFcezYMRo0aED//v3VKnsVPXv2ZM2aNXTs2JGPP/44V+fMnz+f6Ohofv/9dwAeeeQR+vbtS9WqVfOzVJHrltXsAuTK0tPT8fb2NrsMERERKYIOHTrEqFGjABg5cmSuzjl69CgDBgxg0KBBHDt2jGeffZbvvvtOYfYvjBkzhsqVK/Pdd98xevToXJ3z4IMPMm/ePF5++WUCAgKYPXs2nTp1Yvz48RiGkc8Vi1x/1EJbCNntdqpVq0Z4eDjLli0zuxwREREpYiIjI1m+fDndu3d3B9u/Mnv2bKKiokhISKBx48a8+OKLmpE3l37++We6dOkC/LOWcIB9+/YxceJE5syZA0DDhg3p06cPbdu2zfM6Ra5XCrSF0NmzZ7n55pupX7++e5yFiIiISG6MGzeOMWPGUK9ePWbMmEHx4sWvemx8fDxRUVF88803AFddX1X+2h9//AFASEjINZ3//fffM3HiRPfcKQ8//DB9+/alevXqeVajyPVKgbYQOnbsGM2aNePWW291v2MnIiIi8ndWr15Nr169sFqtzJgxg9tuu+2qx86dO5eoqCji4uJo1qwZ/fv3JyIiogCrlf81adIkJk6cSFJSEsWLF6dPnz706dMHT09Ps0sTKbQ0hrYQOn/+PIDG0IqIiEiunTp1yt29+PXXX79qmE1ISGDQoEG89NJLxMXF0b9/f2bNmqUwWwj07t2befPm0aNHD86ePcv777/Pww8/zNKlS80uTaTQUqAthBRoRURE5J8aNWoUe/bsoWPHjvTu3fuKx3z77bd066qjThQAACAASURBVNaNWbNm0bRpU2bOnMmAAQMKuFL5K6GhoYwcOZIZM2Zwxx13sHXrVvr27ctLL73Evn37zC5PpNBR/4VCKD09HVCgFRERkdyZNm0as2fPpnr16gwePPiy/cePHycqKoqZM2cC0K9fPwYMGIDVqraNwqp58+Y0b96cGTNmMHHiRObOncv3339Pnz596Nu3L15eXmaXKFIo6LdYIXQx0NpsNpMrERERkcJu69at7q7GgwcPpmzZsjn2z58/n27dujFz5kxuvfVWvvrqK15++WWF2SLiscceY968efTp04fU1FTGjBlD586dWbJkidmliRQK+k1WCKnLsYiIiOSGw+Fg1KhRpKWl8fLLL3P33Xe79yUlJTF48GD69evH4cOHeeGFF5g5cya33367iRXLtShVqhSvv/468+bNo23btmzfvp1nnnmG/v37s2fPHrPLEzGVAm0hpEArIiIiuTFq1Cg2bdpEmzZt6Nevn3v7ggUL6Nq1K1999RWNGjVi+vTpDBw4ULPlFnENGzYkOjqasWPHEh4ezrfffkvnzp355JNPyMrKMrs8EVMo0BZCGkMrIiIif2f+/PlMmjSJkJAQ97jZkydPMmTIEF544QUOHTrEc889x6xZs2jRooXJ1Upeeuihh5g3b557Qq8PP/yQTp06sWjRIpMrEyl4CrSFkAKtiIiI/JVDhw7lGDcbFhbGokWL6Nq1K9OnT6dBgwZMmzaNQYMGafKg65Sfnx/9+/dn7ty5dOrUiZ07d/Lcc8/Rr18/du/ebXZ5IgVG/U5MdvLkSUqXLp1jm7oci4iIyF8ZNWoUCQkJPPvss0RERDB06FCmTZsGwDPPPMOAAQPw8fG56vm//PILW7Zs4eeff2bLli2UK1eOFStWFFT5kofCw8OJioqiTZs2TJw4kfnz57NixQr3bMiaZFSudwq0JoqKimLs2LFMnTqVO++80709MzMT4LL/EcXExPDGG2/Qs2dP2rVrV5ClioiISCExbtw4li9fzh133EG9evXo1q0b+/fv55ZbbmHAgAE5/qYASEtLY8uWLe6P3377Dbvd7t5fvnx5AgMDC/guJK+1bduWtm3bMnHiRKKjo4mKinIH2w4dOphdnki+UaA1UfXq1QFYuXLlFQPt/7bQzpo1i02bNtGsWTMFWhERkRvQ6tWrGTNmDCVLlqRYsWI888wzAERGRvLSSy/h6+tLYmKiO7xu27aNbdu25bhG+fLladSoEQ0aNKBhw4Y0aNDAjFuRfBIZGelurZ0+fTovvPACBw8edI+3FbneKNCaqG3btgCsWrWKESNGuLdfnKXu0kCbnp7O4sWLgez1yEREROTGcurUKfe4WZvNxsKFC6lXrx7du3fH09OT4cOHs23btsuWcQkODqZZs2bu8Fq/fn0zypcCVKlSJd555x3atGnD5MmTad++vdklieQbBVoTeXp60rZtW5YtW8by5ctp06YN8GegvbTL8fz580lISKB169aUKVPGlHpFRETEPG+//bY7rB47dozq1atz7tw5Xn/99RzHlS5dmttuu41bb72VBg0aUK9ePTPKlUKgZcuWtGzZ0uwyRPKVAq3J2rVrx7Jly/jxxx8vC7SXttAuXLgQgEcffbTgixQRERFTPfroo6xfvz7HtpiYGAACAwOJiIigWbNmNG7cmNq1a5tRooiIKRRoTXbXXXcB2d2OL/rfQLtlyxbWr19PcHAwd999d8EXKSIiIqa6NMwWL16ciIgIIiIiaNq0KeHh4SZWJiJiLgVakwUEBHDPPfewYsUKFi9eTLt27S7rcrxgwQIAunfvblqdIiIiYp4GDRrg7+/PG2+8oQArInIJBdpC4L777mPFihWsXLmSdu3a5ZjlOCsry93duGPHjmaWKSIiIib57rvvzC5B8tHu3btZv34927Zt4/Dhw5w4cYKkpCSzyyqSbDYbQUFBlC1blpo1a3LLLbdw1113UapUKbNLk3yiQFsIXBysf7Hb8aUttF999RWnT5+mdevWhIWFmVajiIiIiOStXbt28f7777NmzRqzS7luZGRkEBcXR1xcHFu2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)" + ], + "metadata": { + "id": "DTE0cKVh7oES" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Install Dependencies" + ], + "metadata": { + "id": "rmiiI22M4aPK" + } + }, + { + "cell_type": "code", + "source": [ + "# Install\n", + "!pip install transformers scikit-learn docx2txt datasets nltk lancedb openai==0.28 -q" + ], + "metadata": { + "id": "aGP9H97ghb9-", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "7b3c4d2a-c2ab-4b4d-8019-b83d0af518bf" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m510.5/510.5 kB\u001b[0m \u001b[31m3.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.3/21.3 MB\u001b[0m \u001b[31m43.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.5/76.5 kB\u001b[0m \u001b[31m10.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m14.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m19.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.5/21.5 MB\u001b[0m \u001b[31m51.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.7/98.7 kB\u001b[0m \u001b[31m14.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Building wheel for docx2txt (setup.py) ... \u001b[?25l\u001b[?25hdone\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Set OPENAI API KEY as env variable" + ], + "metadata": { + "id": "ygbayCQH6tlr" + } + }, + { + "cell_type": "code", + "source": [ + "# Set OPENAI_API_KEY\n", + "\n", + "import os\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-...\"" + ], + "metadata": { + "id": "hOP0kua_q2lp" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Data Loading" + ], + "metadata": { + "id": "BcX8B04yCp7x" + } + }, + { + "cell_type": "code", + "source": [ + "# Load text\n", + "\n", + "# !wget link\n", + "with open(\"lease.txt\", \"r\") as file:\n", + " text_data = file.read()" + ], + "metadata": { + "id": "GNdKH6GuOuo3" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Data Chunking and Embedding" + ], + "metadata": { + "id": "J9ZADS66CuK9" + } + }, + { + "cell_type": "code", + "source": [ + "# Recursive Text Splitter\n", + "\n", + "import nltk\n", + "\n", + "nltk.download(\"punkt\")\n", + "from nltk.tokenize import sent_tokenize\n", + "import re\n", + "\n", + "\n", + "def recursive_text_splitter(text, max_chunk_length=1000, overlap=100):\n", + " \"\"\"\n", + " Helper function for chunking text recursively\n", + " \"\"\"\n", + " # Initialize result\n", + " result = []\n", + "\n", + " current_chunk_count = 0\n", + " separator = [\"\\n\", \" \"]\n", + " _splits = re.split(f\"({separator})\", text)\n", + " splits = [_splits[i] + _splits[i + 1] for i in range(1, len(_splits), 2)]\n", + "\n", + " for i in range(len(splits)):\n", + " if current_chunk_count != 0:\n", + " chunk = \"\".join(\n", + " splits[\n", + " current_chunk_count\n", + " - overlap : current_chunk_count\n", + " + max_chunk_length\n", + " ]\n", + " )\n", + " else:\n", + " chunk = \"\".join(splits[0:max_chunk_length])\n", + "\n", + " if len(chunk) > 0:\n", + " result.append(\"\".join(chunk))\n", + " current_chunk_count += max_chunk_length\n", + "\n", + " return result" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "n_O8DxuqGPKx", + "outputId": "db3b9321-7ecf-401b-e54e-3e962c041bd5" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package punkt to /root/nltk_data...\n", + "[nltk_data] Unzipping tokenizers/punkt.zip.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Split the text using the recursive character text splitter\n", + "chunks = recursive_text_splitter(text_data, max_chunk_length=100, overlap=10)\n", + "print(\"Number of Chunks: \", len(chunks))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "kQ9MggTd1nQU", + "outputId": "791d6cae-73fb-4b2a-9536-592b49346835" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Number of Chunks: 11\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Embedder" + ], + "metadata": { + "id": "HoGDypAnC5ZS" + } + }, + { + "cell_type": "code", + "source": [ + "from transformers import AutoTokenizer, AutoModel\n", + "import torch\n", + "\n", + "# Choose a pre-trained model (e.g., BERT, RoBERTa, etc.)\n", + "# Load the tokenizer and model\n", + "model_name = \"bert-base-uncased\"\n", + "tokenizer = AutoTokenizer.from_pretrained(model_name)\n", + "model = AutoModel.from_pretrained(model_name)\n", + "\n", + "\n", + "def embedder(chunk):\n", + " \"\"\"\n", + " Helper function to embed chunk of text\n", + " \"\"\"\n", + " # Tokenize the input text\n", + " tokens = tokenizer(chunk, return_tensors=\"pt\", padding=True, truncation=True)\n", + "\n", + " # Get the model's output (including embeddings)\n", + " with torch.no_grad():\n", + " model_output = model(**tokens)\n", + "\n", + " # Extract the embeddings\n", + " embeddings = model_output.last_hidden_state[:, 0, :]\n", + " embed = embeddings[0].numpy()\n", + " return embed" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 301, + "referenced_widgets": [ + "e4c6e5d0090e436cb885385e8e68f357", + "35d8e64a2e674ed3959626670ff09853", + "dc4a003d97de4b37a141257473a3b59a", + "0d02407716aa4837860a2ff0ad882ac1", + "68a3d158238e4896a7943fccd549dbd5", + "4ca5db02add34e33ad9b3ba0e87a9d26", + "ee33d0cd81234d94847d2b8c6535ee39", + "9e91359e22d7489c8f1701ba6dbb7787", + "3c9f94e4b37f4147948be5b0eb5242db", + "eb22c54b877f4c33b96c403f0e596518", + "0aab614b9920447bbd7d67de4f3485e7", + "4bee37ac3b7d4c78b4ba060a81db0058", + "164b86b6d6694aff95e1266a1885efbd", + "afbcb78432e0404a999a4d51261bfa85", + "3e781910d0fd45469b4bbc69b148504f", + "19d74cef120a496298393b06d6715e32", + "745947ded8144803aeeebe36eb40c4c4", + "2bdc1e2bd613491b9342420e87b50b54", + "bcc9786aa0514c7a876a8065de0f5fdb", + "8d3450b98af642f4822158194cf4a503", + "6f0f67e242da46f8959dd88bfad3a49c", + "82d1f9c1f8374747b44b09575a780a7b", + "284ffc0c8c264984a5f495080f791eca", + "a4d33c5d7797493eba3cf066d3e8451d", + "85d075b7d8a84a1794f929ddf16f11e2", + "88970a7bcaff461f801efd843ee4a8db", + "ff3be2d8cecd49a0aba64264e6869f26", + "e3631128e4be4a11bdf0ebcaf2993f61", + "55d3c015ec2e4ee185590601a1cf8d4e", + "7b82144162044815b6a060fde1518904", + "999d4b0010904b189713b60fe1209842", + "0a29a69c9008437082e94cfbd5d689a0", + "7366b19dc1e0421a82d6dd579435137d", + "36955454f0bf46ce92b0fa77dea2a07a", + "364885da6664490bbe1541043b9178e4", + "d43d8a93a4904b40ab4d308ab285cf02", + "b893410f3edc40af8e0863df97c86ae5", + "b8ad205864b64f1daae7604f0ba08133", + "54186ef93d90443dbcf3e722565d4096", + "55a5f7deeab14d1cacd1fa04be22b95d", + "118cf8575e6c4952b3b33ea4ec1a1e9b", + "5a5c3c397dd44d478249c0295a16f238", + "c38ed191048e4a328ff591d133371e3c", + "c86cdc05d3db41a1904d7aafd03eeab3", + "e56605bc1f084f5994509839b10e85b3", + "83d2c50e80744755b572a3022a3a6f2f", + "6db50c93fc764ac093829a76070e7c62", + "38d9c91b5d0b4a509058886d039a217f", + "be79d8c5fb464923941a29955f261235", + "f690a39dd19e4a8a95ab61b3d33e07a7", + "9dd411b76d1045ea9e3e887d265580ab", + "321776a1a0b34e4c8134cbec97e5d88a", + "1901462b19d448288b696a55d337a228", + "eb9e260e53964c71a21f3ce0622394e6", + "27713d358d9347259c6ffee8acfd3a92" + ] + }, + "id": "YGuX1MAjIsA0", + "outputId": "2a019b68-268f-4fc3-eb30-e172139b6e11" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_token.py:88: UserWarning: \n", + "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", + "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", + "You will be able to reuse this secret in all of your notebooks.\n", + "Please note that authentication is recommended but still optional to access public models or datasets.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "tokenizer_config.json: 0%| | 0.00/48.0 [00:00 + +### [Read the blog](blog.lancedb.com) + +## Setup +``` +pip install -r requirements.txt +``` + +Download the desired dataset. For example, Uber10K +!llamaindex-cli download-llamadataset Uber10KDataset2021 --download-dir ./data + +## Run the benchmark +`COHERE_API_KEY=... OPENAI_API_KEY=... python main.py` + diff --git a/tutorials/cohere-reranker/main.py b/tutorials/cohere-reranker/main.py new file mode 100644 index 00000000..a2cdc3ea --- /dev/null +++ b/tutorials/cohere-reranker/main.py @@ -0,0 +1,124 @@ +import time +from tqdm import tqdm + +import pandas as pd + +from llama_index.core import SimpleDirectoryReader +from llama_index.core.llama_dataset import LabelledRagDataset +from llama_index.vector_stores.lancedb import LanceDBVectorStore +from llama_index.core import VectorStoreIndex +from llama_index.core import SimpleDirectoryReader, ServiceContext, StorageContext +from llama_index.embeddings.huggingface import HuggingFaceEmbedding +from llama_index.core.schema import TextNode, NodeRelationship, RelatedNodeInfo +from llama_index.embeddings.openai import OpenAIEmbedding +from lancedb.rerankers import CohereReranker, ColbertReranker + + +def evaluate( + docs, + dataset, + embed_model=None, + reranker=None, + top_k=5, + query_type="auto", + verbose=False, +): + # corpus = dataset['corpus'] + # queries = dataset['queries'] + # relevant_docs = dataset['relevant_docs'] + + vector_store = LanceDBVectorStore(uri=f"/tmp/lancedb_cohere-bench-{time.time()}") + storage_context = StorageContext.from_defaults(vector_store=vector_store) + service_context = ServiceContext.from_defaults(embed_model=embed_model) + index = VectorStoreIndex.from_documents( + docs, + service_context=service_context, + show_progress=True, + storage_context=storage_context, + ) + tbl = vector_store._connection.open_table(vector_store.table_name) + tbl.create_fts_index("text", replace=True) + + eval_results = [] + ds = dataset.to_pandas() + for idx in tqdm(range(len(ds))): + query = ds["query"][idx] + reference_context = ds["reference_contexts"][idx] + query_vector = embed_model.get_query_embedding(query) + try: + if reranker is None: + rs = tbl.search(query_vector).limit(top_k).to_pandas() + elif query_type == "auto": + rs = ( + tbl.search((query_vector, query)) + .rerank(reranker=reranker) + .limit(top_k) + .to_pandas() + ) + elif query_type == "vector": + rs = ( + tbl.search(query_vector) + .rerank(reranker=reranker, query_string=query) + .limit(top_k * 2) + .to_pandas() + ) # Overfetch for vector only reranking + except Exception as e: + print(f"Error with query: {idx} {e}") + continue + retrieved_texts = rs["text"].tolist()[:top_k] + expected_text = reference_context[0] + is_hit = expected_text in retrieved_texts # assume 1 relevant doc + eval_result = { + "is_hit": is_hit, + "retrieved": retrieved_texts, + "expected": expected_text, + "query": query, + } + eval_results.append(eval_result) + return eval_results + + +rag_dataset = LabelledRagDataset.from_json("./data/rag_dataset.json") +documents = SimpleDirectoryReader(input_dir="./data/source_files").load_data() + +embed_models = { + "bge": HuggingFaceEmbedding(model_name="BAAI/bge-large-en-v1.5"), + "colbert": HuggingFaceEmbedding(model_name="colbert-ir/colbertv2.0"), +} +rerankers = { + "None": None, + "cohere-v2": CohereReranker(), + "cohere-v3": CohereReranker(model_name="rerank-english-v3.0"), + "ColbertReranker": ColbertReranker(), +} + +scores = {} +for embed_name, embed_model in embed_models.items(): + for reranker_name, reranker in rerankers.items(): + eval_results = evaluate( + docs=documents, + dataset=rag_dataset, + embed_model=embed_model, + reranker=reranker, + top_k=5, + verbose=True, + ) + print(f" Embedder {embed_name} Reranker: {reranker_name}") + score = pd.DataFrame(eval_results)["is_hit"].mean() + print(score) + scores[reranker_name] = score + + if reranker_name != "None": + eval_results = evaluate( + docs=documents, + dataset=rag_dataset, + embed_model=embed_model, + reranker=reranker, + top_k=5, + query_type="vector", + verbose=True, + ) + print(f"Embedder {embed_name} Reranker: {reranker_name} (vector)") + score = pd.DataFrame(eval_results)["is_hit"].mean() + print(score) + scores[f"{reranker_name}_vector"] = score diff --git a/tutorials/cohere-reranker/requirements.txt b/tutorials/cohere-reranker/requirements.txt new file mode 100644 index 00000000..a8bc8b5f --- /dev/null +++ b/tutorials/cohere-reranker/requirements.txt @@ -0,0 +1,113 @@ +aiohttp==3.9.5 +aiosignal==1.3.1 +annotated-types==0.6.0 +anyio==4.3.0 +appdirs==1.4.4 +attrs==23.2.0 +beautifulsoup4==4.12.3 +cachetools==5.3.3 +certifi==2024.2.2 +charset-normalizer==3.3.2 +click==8.1.7 +cohere==5.3.4 +dataclasses-json==0.6.5 +decorator==5.1.1 +Deprecated==1.2.14 +deprecation==2.1.0 +dirtyjson==1.0.8 +distro==1.9.0 +docker-pycreds==0.4.0 +fastavro==1.9.4 +filelock==3.14.0 +frozenlist==1.4.1 +fsspec==2024.3.1 +gitdb==4.0.11 +GitPython==3.1.43 +greenlet==3.0.3 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +httpx-sse==0.4.0 +huggingface-hub==0.22.2 +idna==3.7 +Jinja2==3.1.3 +joblib==1.4.0 +lancedb==0.6.11 +llama-index==0.10.33 +llama-index-agent-openai==0.2.3 +llama-index-cli==0.1.12 +llama-index-core==0.10.33 +llama-index-embeddings-huggingface==0.2.0 +llama-index-embeddings-openai==0.1.9 +llama-index-indices-managed-llama-cloud==0.1.6 +llama-index-legacy==0.9.48 +llama-index-llms-openai==0.1.16 +llama-index-multi-modal-llms-openai==0.1.5 +llama-index-program-openai==0.1.6 +llama-index-question-gen-openai==0.1.3 +llama-index-readers-file==0.1.19 +llama-index-readers-llama-parse==0.1.4 +llama-index-vector-stores-lancedb==0.1.3 +llama-parse==0.4.2 +llamaindex-py-client==0.1.19 +MarkupSafe==2.1.5 +marshmallow==3.21.2 +minijinja==2.0.1 +mpmath==1.3.0 +multidict==6.0.5 +mypy-extensions==1.0.0 +nest-asyncio==1.6.0 +networkx==3.3 +nltk==3.8.1 +numpy==1.26.4 +openai==1.25.0 +overrides==7.7.0 +packaging==24.0 +pandas==2.2.2 +pillow==10.3.0 +protobuf==4.25.3 +psutil==5.9.8 +py==1.11.0 +pyarrow==15.0.0 +pydantic==2.7.1 +pydantic_core==2.18.2 +pylance==0.10.12 +pypdf==4.2.0 +python-dateutil==2.9.0.post0 +pytz==2024.1 +PyYAML==6.0.1 +ratelimiter==1.2.0.post0 +regex==2024.4.28 +requests==2.31.0 +retry==0.9.2 +safetensors==0.4.3 +scikit-learn==1.4.2 +scipy==1.13.0 +semver==3.0.2 +sentence-transformers==2.7.0 +sentry-sdk==2.1.0 +setproctitle==1.3.3 +setuptools==69.5.1 +six==1.16.0 +smmap==5.0.1 +sniffio==1.3.1 +soupsieve==2.5 +SQLAlchemy==2.0.29 +striprtf==0.0.26 +sympy==1.12 +tantivy==0.21.0 +tenacity==8.2.3 +threadpoolctl==3.5.0 +tiktoken==0.6.0 +tokenizers==0.19.1 +torch==2.3.0 +tqdm==4.66.2 +transformers==4.40.1 +types-requests==2.31.0.20240406 +typing-inspect==0.9.0 +typing_extensions==4.11.0 +tzdata==2024.1 +urllib3==2.2.1 +wandb==0.16.6 +wrapt==1.16.0 +yarl==1.9.4