From 3578e4b1ba8bf040942fac5a20812a0e258595cf Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Mon, 14 Apr 2025 11:45:35 -0500 Subject: [PATCH 01/11] rerankers article notebook --- .../llamaindex_rerank_notebook.ipynb | 755 ++++++++++++++++++ 1 file changed, 755 insertions(+) create mode 100644 supporting-blog-content/llamaindex-rerank/llamaindex_rerank_notebook.ipynb diff --git a/supporting-blog-content/llamaindex-rerank/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-rerank/llamaindex_rerank_notebook.ipynb new file mode 100644 index 00000000..beeaee44 --- /dev/null +++ b/supporting-blog-content/llamaindex-rerank/llamaindex_rerank_notebook.ipynb @@ -0,0 +1,755 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "LlrEjmtJNpuX" + }, + "source": [ + "# LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review\n", + "\n", + "This notebook demonstrates how to use AutoGen with Elasticsearch. This notebook is based on the article [LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review](https://www.elastic.co/search-labs/blog/llamaIndex-reranker-and-elasticsearch-reranker-comparison-review)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GNaAN-GNO5qp" + }, + "source": [ + "## Installing dependencies and importing packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "D1SqWMbbASRS", + "outputId": "8ab3bb5d-5d3c-4244-f14c-c303c7ab4f6f" + }, + "outputs": [], + "source": [ + "%pip install elasticsearch==8.17 llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rAesontNXpLu" + }, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "import nest_asyncio\n", + "from getpass import getpass\n", + "\n", + "\n", + "from elasticsearch import Elasticsearch\n", + "from elasticsearch.helpers import bulk\n", + "\n", + "from llama_index.core import Document, VectorStoreIndex, QueryBundle, Settings\n", + "from llama_index.core.retrievers import VectorIndexRetriever\n", + "from llama_index.postprocessor.rankgpt_rerank import RankGPTRerank\n", + "from llama_index.llms.openai import OpenAI\n", + "\n", + "\n", + "nest_asyncio.apply()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NwOmnk99Pfh3" + }, + "source": [ + "## Declaring variables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GVKJKfFpPWuj" + }, + "outputs": [], + "source": [ + "os.environ[\"ELASTICSEARCH_ENDPOINT\"] = getpass(\"Elastic Endpoint: \")\n", + "os.environ[\"ELASTICSEARCH_API_KEY\"] = getpass(\"Elastic Api Key: \")\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass(\"OpenAI Key: \")\n", + "\n", + "INDEX_NAME = \"products-laptops\"\n", + "INFERENCE_RERANK_NAME = \"my-elastic-rerank\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3O2HclcYHEsS" + }, + "source": [ + "### Instance a Elasticsearch client" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "EHYHU2-1nUeW" + }, + "outputs": [], + "source": [ + "# Elasticsearch client\n", + "_client = Elasticsearch(\n", + " os.environ[\"ELASTICSEARCH_ENDPOINT\"],\n", + " api_key=os.environ[\"ELASTICSEARCH_API_KEY\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Defining dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "LVr6TR8qlw2M" + }, + "outputs": [], + "source": [ + "products = [\n", + " {\n", + " \"name\": \"ASUS ROG Strix G16\",\n", + " \"description\": \"Powerful gaming laptop with Intel Core i9 and RTX 4070.\",\n", + " \"price\": 1899.99,\n", + " \"reviews\": 4.7,\n", + " \"sales\": 320,\n", + " \"features\": [\n", + " \"Intel Core i9\",\n", + " \"RTX 4070\",\n", + " \"16GB RAM\",\n", + " \"512GB SSD\",\n", + " \"165Hz Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"Razer Blade 15\",\n", + " \"description\": \"Premium gaming laptop with an ultra-slim design and high refresh rate.\",\n", + " \"price\": 2499.99,\n", + " \"reviews\": 4.6,\n", + " \"sales\": 290,\n", + " \"features\": [\n", + " \"Intel Core i7\",\n", + " \"RTX 4060\",\n", + " \"16GB RAM\",\n", + " \"1TB SSD\",\n", + " \"240Hz Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"Acer Predator Helios 300\",\n", + " \"description\": \"Affordable yet powerful gaming laptop with RTX graphics.\",\n", + " \"price\": 1399.99,\n", + " \"reviews\": 4.5,\n", + " \"sales\": 500,\n", + " \"features\": [\n", + " \"Intel Core i7\",\n", + " \"RTX 3060\",\n", + " \"16GB RAM\",\n", + " \"512GB SSD\",\n", + " \"144Hz Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"MSI Stealth 17\",\n", + " \"description\": \"High-performance gaming laptop with a 17-inch display.\",\n", + " \"price\": 2799.99,\n", + " \"reviews\": 4.8,\n", + " \"sales\": 200,\n", + " \"features\": [\"Intel Core i9\", \"RTX 4080\", \"32GB RAM\", \"1TB SSD\", \"4K Display\"],\n", + " },\n", + " {\n", + " \"name\": \"Dell XPS 15\",\n", + " \"description\": \"Sleek and powerful ultrabook with a high-resolution display.\",\n", + " \"price\": 2199.99,\n", + " \"reviews\": 4.7,\n", + " \"sales\": 350,\n", + " \"features\": [\n", + " \"Intel Core i7\",\n", + " \"RTX 3050 Ti\",\n", + " \"16GB RAM\",\n", + " \"1TB SSD\",\n", + " \"OLED Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"HP Omen 16\",\n", + " \"description\": \"Gaming laptop with a balanced price-to-performance ratio.\",\n", + " \"price\": 1599.99,\n", + " \"reviews\": 4.4,\n", + " \"sales\": 280,\n", + " \"features\": [\n", + " \"AMD Ryzen 7\",\n", + " \"RTX 3060\",\n", + " \"16GB RAM\",\n", + " \"512GB SSD\",\n", + " \"165Hz Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"Lenovo Legion 5 Pro\",\n", + " \"description\": \"Powerful Ryzen-powered gaming laptop with high refresh rate.\",\n", + " \"price\": 1799.99,\n", + " \"reviews\": 4.6,\n", + " \"sales\": 400,\n", + " \"features\": [\n", + " \"AMD Ryzen 9\",\n", + " \"RTX 3070 Ti\",\n", + " \"16GB RAM\",\n", + " \"1TB SSD\",\n", + " \"165Hz Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"MacBook Pro 16\",\n", + " \"description\": \"Apple's most powerful laptop with M3 Max chip.\",\n", + " \"price\": 3499.99,\n", + " \"reviews\": 4.9,\n", + " \"sales\": 500,\n", + " \"features\": [\n", + " \"Apple M3 Max\",\n", + " \"32GB RAM\",\n", + " \"1TB SSD\",\n", + " \"Liquid Retina XDR Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"Alienware m18\",\n", + " \"description\": \"High-end gaming laptop with extreme performance.\",\n", + " \"price\": 2999.99,\n", + " \"reviews\": 4.8,\n", + " \"sales\": 150,\n", + " \"features\": [\n", + " \"Intel Core i9\",\n", + " \"RTX 4090\",\n", + " \"32GB RAM\",\n", + " \"2TB SSD\",\n", + " \"480Hz Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"Samsung Galaxy Book3 Ultra\",\n", + " \"description\": \"Ultra-lightweight yet powerful laptop with AMOLED display.\",\n", + " \"price\": 2099.99,\n", + " \"reviews\": 4.5,\n", + " \"sales\": 180,\n", + " \"features\": [\n", + " \"Intel Core i7\",\n", + " \"RTX 4070\",\n", + " \"16GB RAM\",\n", + " \"512GB SSD\",\n", + " \"AMOLED Display\",\n", + " ],\n", + " },\n", + " {\n", + " \"name\": \"Microsoft Surface Laptop 5\",\n", + " \"description\": \"Sleek productivity laptop with great battery life.\",\n", + " \"price\": 1699.99,\n", + " \"reviews\": 4.3,\n", + " \"sales\": 220,\n", + " \"features\": [\"Intel Core i7\", \"16GB RAM\", \"512GB SSD\", \"Touchscreen\"],\n", + " },\n", + " {\n", + " \"name\": \"Gigabyte AORUS 17\",\n", + " \"description\": \"Performance-focused gaming laptop with powerful cooling.\",\n", + " \"price\": 1999.99,\n", + " \"reviews\": 4.6,\n", + " \"sales\": 250,\n", + " \"features\": [\n", + " \"Intel Core i9\",\n", + " \"RTX 4070\",\n", + " \"16GB RAM\",\n", + " \"1TB SSD\",\n", + " \"360Hz Display\",\n", + " ],\n", + " },\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Indexing documents to Elasticsearch" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Creating mapping for the index\n", + "try:\n", + " _client.indices.create(\n", + " index=INDEX_NAME,\n", + " body={\n", + " \"mappings\": {\n", + " \"properties\": {\n", + " \"name\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", + " \"description\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", + " \"price\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", + " \"reviews\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", + " \"sales\": {\"type\": \"integer\", \"copy_to\": \"semantic_field\"},\n", + " \"features\": {\"type\": \"keyword\", \"copy_to\": \"semantic_field\"},\n", + " \"semantic_field\": {\"type\": \"semantic_text\"},\n", + " }\n", + " }\n", + " },\n", + " )\n", + "\n", + " print(\"index created successfully\")\n", + "except Exception as e:\n", + " print(\n", + " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Creating inference endpoint for re-ranking\n", + "try:\n", + " _client.options(\n", + " request_timeout=60, max_retries=3, retry_on_timeout=True\n", + " ).inference.put(\n", + " task_type=\"rerank\",\n", + " inference_id=INFERENCE_RERANK_NAME,\n", + " body={\n", + " \"service\": \"elasticsearch\",\n", + " \"service_settings\": {\n", + " \"model_id\": \".rerank-v1\",\n", + " \"num_threads\": 1,\n", + " \"adaptive_allocations\": {\n", + " \"enabled\": True,\n", + " \"min_number_of_allocations\": 1,\n", + " \"max_number_of_allocations\": 4,\n", + " },\n", + " },\n", + " },\n", + " )\n", + "\n", + " print(\"Inference endpoint created successfully.\")\n", + "\n", + "except Exception as e:\n", + " print(\n", + " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def build_data():\n", + " for doc in products:\n", + " yield {\"_index\": INDEX_NAME, \"_source\": doc}\n", + "\n", + "\n", + "try:\n", + " success, errors = bulk(_client, build_data())\n", + " print(f\"{success} documents indexed successfully\")\n", + "\n", + " if errors:\n", + " print(\"Errors during indexing:\", errors)\n", + "\n", + "except Exception as e:\n", + " print(f\"Error: {str(e)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P53v_KzjH9Ab" + }, + "source": [ + "## LlamaIndex re-rankers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rerank_promt = \"Best laptops for developers and designers\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EIvU-vxKpKhy" + }, + "source": [ + "### documents formating" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i2fZZLDgxtPu" + }, + "outputs": [], + "source": [ + "document_objects = []\n", + "\n", + "for doc in products:\n", + " text_content = f\"\"\"\n", + " Product Name: {doc[\"name\"]}\n", + " Description: {doc[\"description\"]}\n", + " Price: ${doc[\"price\"]}\n", + " Reviews: {doc[\"reviews\"]} stars\n", + " Sales: {doc[\"sales\"]} units sold\n", + " Features: {', '.join(doc[\"features\"])}\n", + " \"\"\"\n", + "\n", + " document_objects.append(Document(text=text_content))\n", + "\n", + "index = VectorStoreIndex.from_documents(document_objects)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kFoBUbx_nJMJ" + }, + "source": [ + "### LLM endpoint" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Settings.llm = OpenAI(temperature=0, model=\"gpt-3.5-turbo\")\n", + "Settings.chunk_size = 512" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kSrlRYAEWBSA" + }, + "outputs": [], + "source": [ + "index = VectorStoreIndex.from_documents(\n", + " document_objects,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "cAYwonikXP8b" + }, + "outputs": [], + "source": [ + "# Re-rank method\n", + "def get_retrieved_nodes(\n", + " query_str, vector_top_k=10, reranker_top_n=3, with_reranker=False\n", + "):\n", + " query_bundle = QueryBundle(query_str)\n", + " # configure retriever\n", + " retriever = VectorIndexRetriever(\n", + " index=index,\n", + " similarity_top_k=vector_top_k,\n", + " )\n", + " retrieved_nodes = retriever.retrieve(query_bundle)\n", + "\n", + " if with_reranker:\n", + " # configure re-ranker\n", + " reranker = RankGPTRerank(\n", + " llm=OpenAI(\n", + " model=\"gpt-3.5-turbo-16k\",\n", + " temperature=0.0,\n", + " api_key=os.environ[\"OPENAI_API_KEY\"],\n", + " ),\n", + " top_n=reranker_top_n,\n", + " verbose=True,\n", + " )\n", + " retrieved_nodes = reranker.postprocess_nodes(retrieved_nodes, query_bundle)\n", + "\n", + " return retrieved_nodes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def visualize_retrieved_nodes(nodes):\n", + " result_dicts = []\n", + "\n", + " for node in nodes:\n", + " result_dict = {\"Score\": node.score, \"Text\": node.node.get_text()}\n", + " result_dicts.append(result_dict)\n", + "\n", + " return result_dicts" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PMFhgK9CXTze" + }, + "source": [ + "### Without re-rank" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 352 + }, + "id": "MNcpUJsKXZPK", + "outputId": "58b4a8b9-a10f-4eae-f727-3268e953b806" + }, + "outputs": [], + "source": [ + "new_nodes = get_retrieved_nodes(\n", + " rerank_promt,\n", + " vector_top_k=12,\n", + " with_reranker=False,\n", + ")\n", + "\n", + "results = visualize_retrieved_nodes(new_nodes[:3])\n", + "\n", + "print(f\"Top 3 results without reranking: {json.dumps(results, indent=2)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### With re-rank" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 369 + }, + "id": "JXTnX6rrIa-D", + "outputId": "c12b1e40-07b2-47b2-a3c9-fcbc1e81a47f" + }, + "outputs": [], + "source": [ + "new_nodes = get_retrieved_nodes(\n", + " rerank_promt,\n", + " vector_top_k=12,\n", + " reranker_top_n=3,\n", + " with_reranker=True,\n", + ")\n", + "\n", + "results = visualize_retrieved_nodes(new_nodes[:3])\n", + "print(f\"Top 3 results with reranking: {json.dumps(results, indent=2)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k7D6EHPdnpr1" + }, + "source": [ + "## Elasticsearch re-rankers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "X0xbyG_fnoBU" + }, + "outputs": [], + "source": [ + "async def es_search(query):\n", + " response = _client.search(index=INDEX_NAME, body=query)\n", + " hits = response[\"hits\"][\"hits\"]\n", + "\n", + " if not hits:\n", + " return \"\"\n", + "\n", + " return json.dumps([hit[\"_source\"] for hit in hits], indent=2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Query with semantic search\n", + "result = await es_search(\n", + " {\n", + " \"size\": 3,\n", + " \"query\": {\n", + " \"semantic\": {\n", + " \"field\": \"semantic_field\",\n", + " \"query\": rerank_promt,\n", + " }\n", + " },\n", + " \"_source\": {\n", + " \"includes\": [\n", + " \"name\",\n", + " \"description\",\n", + " \"price\",\n", + " \"reviews\",\n", + " \"sales\",\n", + " \"features\",\n", + " ]\n", + " },\n", + " }\n", + ")\n", + "\n", + "print(f\"Query result: {result}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ME8w7MR4orci", + "outputId": "c8495176-ef78-4fb2-8cd8-6ca6c25b0811" + }, + "outputs": [], + "source": [ + "results = await es_search(\n", + " {\n", + " \"size\": 3,\n", + " \"_source\": {\n", + " \"includes\": [\n", + " \"name\",\n", + " \"description\",\n", + " \"price\",\n", + " \"reviews\",\n", + " \"sales\",\n", + " \"features\",\n", + " ]\n", + " },\n", + " \"retriever\": {\n", + " \"text_similarity_reranker\": {\n", + " \"retriever\": {\n", + " \"standard\": {\n", + " \"query\": {\n", + " \"semantic\": {\n", + " \"field\": \"semantic_field\",\n", + " \"query\": rerank_promt,\n", + " }\n", + " }\n", + " }\n", + " },\n", + " \"field\": \"text\",\n", + " \"inference_id\": INFERENCE_RERANK_NAME,\n", + " \"inference_text\": rerank_promt,\n", + " \"rank_window_size\": 10,\n", + " \"min_score\": 0.5,\n", + " }\n", + " },\n", + " }\n", + ")\n", + "print(f\"Query result: {result}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "S6WZMJayyzxh" + }, + "source": [ + "## Cleaning environment\n", + "\n", + "Delete the resources used to prevent them from consuming resources." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def print_results(results):\n", + " if results.get(\"acknowledged\", False):\n", + " print(\"DELETED successfully.\")\n", + "\n", + " if \"error\" in results:\n", + " print(f\"ERROR: {results['error']['root_cause'][0]['reason']}\")\n", + "\n", + "\n", + "# Cleanup - Delete Index\n", + "result = _client.indices.delete(index=INDEX_NAME, ignore=[400, 404])\n", + "print_results(result)\n", + "\n", + "\n", + "# Cleanup - Inference endpoint\n", + "result = _client.inference.delete(inference_id=INFERENCE_RERANK_NAME, ignore=[400, 404])\n", + "print_results(result)" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [ + "9lvPHaXjPlfu" + ], + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 0974b8875fcc95a6c693fa655a01a7cfffe12635 Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Mon, 14 Apr 2025 11:47:32 -0500 Subject: [PATCH 02/11] renaming folder --- .../llamaindex_rerank_notebook.ipynb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename supporting-blog-content/{llamaindex-rerank => llamaindex-re-ranker-and-elasticsearch-re-ranker}/llamaindex_rerank_notebook.ipynb (100%) diff --git a/supporting-blog-content/llamaindex-rerank/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb similarity index 100% rename from supporting-blog-content/llamaindex-rerank/llamaindex_rerank_notebook.ipynb rename to supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb From 3b2ec451b959de861dd8e46ed6ae8dca1345ed6a Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Mon, 21 Apr 2025 12:30:37 -0500 Subject: [PATCH 03/11] notebook changes --- .../llamaindex_rerank_notebook.ipynb | 811 +++++++++++++----- 1 file changed, 573 insertions(+), 238 deletions(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index beeaee44..e7aadd4a 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -11,116 +11,16 @@ "This notebook demonstrates how to use AutoGen with Elasticsearch. This notebook is based on the article [LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review](https://www.elastic.co/search-labs/blog/llamaIndex-reranker-and-elasticsearch-reranker-comparison-review)." ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "GNaAN-GNO5qp" - }, - "source": [ - "## Installing dependencies and importing packages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "collapsed": true, - "id": "D1SqWMbbASRS", - "outputId": "8ab3bb5d-5d3c-4244-f14c-c303c7ab4f6f" - }, - "outputs": [], - "source": [ - "%pip install elasticsearch==8.17 llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "rAesontNXpLu" - }, - "outputs": [], - "source": [ - "import json\n", - "import os\n", - "import nest_asyncio\n", - "from getpass import getpass\n", - "\n", - "\n", - "from elasticsearch import Elasticsearch\n", - "from elasticsearch.helpers import bulk\n", - "\n", - "from llama_index.core import Document, VectorStoreIndex, QueryBundle, Settings\n", - "from llama_index.core.retrievers import VectorIndexRetriever\n", - "from llama_index.postprocessor.rankgpt_rerank import RankGPTRerank\n", - "from llama_index.llms.openai import OpenAI\n", - "\n", - "\n", - "nest_asyncio.apply()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NwOmnk99Pfh3" - }, - "source": [ - "## Declaring variables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "GVKJKfFpPWuj" - }, - "outputs": [], - "source": [ - "os.environ[\"ELASTICSEARCH_ENDPOINT\"] = getpass(\"Elastic Endpoint: \")\n", - "os.environ[\"ELASTICSEARCH_API_KEY\"] = getpass(\"Elastic Api Key: \")\n", - "os.environ[\"OPENAI_API_KEY\"] = getpass(\"OpenAI Key: \")\n", - "\n", - "INDEX_NAME = \"products-laptops\"\n", - "INFERENCE_RERANK_NAME = \"my-elastic-rerank\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "3O2HclcYHEsS" - }, - "source": [ - "### Instance a Elasticsearch client" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "EHYHU2-1nUeW" - }, - "outputs": [], - "source": [ - "# Elasticsearch client\n", - "_client = Elasticsearch(\n", - " os.environ[\"ELASTICSEARCH_ENDPOINT\"],\n", - " api_key=os.environ[\"ELASTICSEARCH_API_KEY\"],\n", - ")" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Defining dataset" + "## Dataset" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "id": "LVr6TR8qlw2M" }, @@ -289,128 +189,221 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Indexing documents to Elasticsearch" + "## User question" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 65, "metadata": {}, "outputs": [], "source": [ - "# Creating mapping for the index\n", - "try:\n", - " _client.indices.create(\n", - " index=INDEX_NAME,\n", - " body={\n", - " \"mappings\": {\n", - " \"properties\": {\n", - " \"name\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", - " \"description\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", - " \"price\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", - " \"reviews\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", - " \"sales\": {\"type\": \"integer\", \"copy_to\": \"semantic_field\"},\n", - " \"features\": {\"type\": \"keyword\", \"copy_to\": \"semantic_field\"},\n", - " \"semantic_field\": {\"type\": \"semantic_text\"},\n", - " }\n", - " }\n", - " },\n", - " )\n", - "\n", - " print(\"index created successfully\")\n", - "except Exception as e:\n", - " print(\n", - " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", - " )" + "user_query = \"Best laptops for gaming\"" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# Creating inference endpoint for re-ranking\n", - "try:\n", - " _client.options(\n", - " request_timeout=60, max_retries=3, retry_on_timeout=True\n", - " ).inference.put(\n", - " task_type=\"rerank\",\n", - " inference_id=INFERENCE_RERANK_NAME,\n", - " body={\n", - " \"service\": \"elasticsearch\",\n", - " \"service_settings\": {\n", - " \"model_id\": \".rerank-v1\",\n", - " \"num_threads\": 1,\n", - " \"adaptive_allocations\": {\n", - " \"enabled\": True,\n", - " \"min_number_of_allocations\": 1,\n", - " \"max_number_of_allocations\": 4,\n", - " },\n", - " },\n", - " },\n", - " )\n", - "\n", - " print(\"Inference endpoint created successfully.\")\n", - "\n", - "except Exception as e:\n", - " print(\n", - " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", - " )" + "## LlamaIndex Reranking" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GNaAN-GNO5qp" + }, + "source": [ + "### Installing dependencies and import packages" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "D1SqWMbbASRS", + "outputId": "8ab3bb5d-5d3c-4244-f14c-c303c7ab4f6f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: llama-index-core in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.12.25)\n", + "Requirement already satisfied: llama-index-llms-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.25)\n", + "Requirement already satisfied: rank-llm in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.21.0)\n", + "Requirement already satisfied: llama-index-postprocessor-rankgpt-rerank in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.0)\n", + "Requirement already satisfied: llama-index-embeddings-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.1)\n", + "Requirement already satisfied: PyYAML>=6.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (6.0.2)\n", + "Requirement already satisfied: SQLAlchemy>=1.4.49 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (2.0.38)\n", + "Requirement already satisfied: aiohttp<4.0.0,>=3.8.6 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.11.13)\n", + "Requirement already satisfied: dataclasses-json in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.6.7)\n", + "Requirement already satisfied: deprecated>=1.2.9.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.18)\n", + "Requirement already satisfied: dirtyjson<2.0.0,>=1.0.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.0.8)\n", + "Requirement already satisfied: filetype<2.0.0,>=1.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2025.2.0)\n", + "Requirement already satisfied: httpx in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.28.1)\n", + "Requirement already satisfied: nest-asyncio<2.0.0,>=1.5.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.6.0)\n", + "Requirement already satisfied: networkx>=3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.4.2)\n", + "Requirement already satisfied: nltk>3.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.9.1)\n", + "Requirement already satisfied: numpy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.2.3)\n", + "Requirement already satisfied: pillow>=9.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (11.1.0)\n", + "Requirement already satisfied: pydantic>=2.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.10.6)\n", + "Requirement already satisfied: requests>=2.31.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.32.3)\n", + "Requirement already satisfied: tenacity!=8.4.0,<10.0.0,>=8.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (9.0.0)\n", + "Requirement already satisfied: tiktoken>=0.3.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.7.0)\n", + "Requirement already satisfied: tqdm<5.0.0,>=4.66.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.67.1)\n", + "Requirement already satisfied: typing-extensions>=4.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.12.2)\n", + "Requirement already satisfied: typing-inspect>=0.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.9.0)\n", + "Requirement already satisfied: wrapt in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.17.2)\n", + "Requirement already satisfied: openai<2.0.0,>=1.58.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-llms-openai) (1.65.1)\n", + "Requirement already satisfied: transformers>=4.40.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (4.49.0)\n", + "Requirement already satisfied: pyserini>=0.43.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (0.44.0)\n", + "Requirement already satisfied: python-dotenv>=1.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.0.1)\n", + "Requirement already satisfied: faiss-cpu>=1.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.10.0)\n", + "Requirement already satisfied: ftfy>=6.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (6.3.1)\n", + "Requirement already satisfied: dacite>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.9.2)\n", + "Requirement already satisfied: fschat>=0.2.36 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.36)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (2.4.6)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.3.2)\n", + "Requirement already satisfied: attrs>=17.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (25.1.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.5.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (6.1.0)\n", + "Requirement already satisfied: propcache>=0.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (0.3.0)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.18.3)\n", + "Requirement already satisfied: packaging in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from faiss-cpu>=1.8.0->rank-llm) (24.2)\n", + "Requirement already satisfied: fastapi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.115.11)\n", + "Requirement already satisfied: markdown2[all] in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.5.3)\n", + "Requirement already satisfied: nh3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.2.21)\n", + "Requirement already satisfied: prompt-toolkit>=3.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.50)\n", + "Requirement already satisfied: rich>=10.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (13.9.4)\n", + "Requirement already satisfied: shortuuid in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.0.13)\n", + "Requirement already satisfied: uvicorn in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.34.0)\n", + "Requirement already satisfied: accelerate>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (1.5.2)\n", + "Requirement already satisfied: peft in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.15.1)\n", + "Requirement already satisfied: sentencepiece in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.0)\n", + "Requirement already satisfied: torch in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (2.6.0)\n", + "Requirement already satisfied: protobuf in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (5.29.3)\n", + "Requirement already satisfied: wcwidth in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from ftfy>=6.2.0->rank-llm) (0.2.13)\n", + "Requirement already satisfied: click in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (8.1.8)\n", + "Requirement already satisfied: joblib in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (1.4.2)\n", + "Requirement already satisfied: regex>=2021.8.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (2024.11.6)\n", + "Requirement already satisfied: anyio<5,>=3.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (4.8.0)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.9.0)\n", + "Requirement already satisfied: jiter<1,>=0.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (0.8.2)\n", + "Requirement already satisfied: sniffio in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.3.1)\n", + "Requirement already satisfied: certifi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (2025.1.31)\n", + "Requirement already satisfied: httpcore==1.* in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (1.0.7)\n", + "Requirement already satisfied: idna in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (3.10)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpcore==1.*->httpx->llama-index-core) (0.14.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.27.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (2.27.2)\n", + "Requirement already satisfied: Cython>=0.29.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.0.12)\n", + "Requirement already satisfied: pandas>=1.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (2.2.3)\n", + "Requirement already satisfied: pyjnius>=1.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", + "Requirement already satisfied: scikit-learn>=0.22.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", + "Requirement already satisfied: scipy>=1.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.15.2)\n", + "Requirement already satisfied: onnxruntime>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.20.1)\n", + "Requirement already satisfied: flask>3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.1.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (3.4.1)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (2.3.0)\n", + "Requirement already satisfied: greenlet!=0.4.17 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (3.1.1)\n", + "Requirement already satisfied: filelock in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (3.17.0)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.26.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.29.1)\n", + "Requirement already satisfied: tokenizers<0.22,>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.21.1)\n", + "Requirement already satisfied: safetensors>=0.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.5.3)\n", + "Requirement already satisfied: mypy-extensions>=0.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from typing-inspect>=0.8.0->llama-index-core) (1.0.0)\n", + "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from dataclasses-json->llama-index-core) (3.26.1)\n", + "Requirement already satisfied: psutil in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from accelerate>=0.21->fschat[model_worker]>=0.2.36->rank-llm) (7.0.0)\n", + "Requirement already satisfied: Werkzeug>=3.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.3)\n", + "Requirement already satisfied: Jinja2>=3.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.5)\n", + "Requirement already satisfied: itsdangerous>=2.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (2.2.0)\n", + "Requirement already satisfied: blinker>=1.9 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (1.9.0)\n", + "Requirement already satisfied: coloredlogs in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (15.0.1)\n", + "Requirement already satisfied: flatbuffers in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (25.2.10)\n", + "Requirement already satisfied: sympy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.13.1)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2025.1)\n", + "Requirement already satisfied: markdown-it-py>=2.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.0)\n", + "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.19.1)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from scikit-learn>=0.22.1->pyserini>=0.43.0->rank-llm) (3.6.0)\n", + "Requirement already satisfied: setuptools in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from torch->fschat[model_worker]>=0.2.36->rank-llm) (75.8.2)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from sympy->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.3.0)\n", + "Requirement already satisfied: starlette<0.47.0,>=0.40.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fastapi->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.46.0)\n", + "Requirement already satisfied: wavedrom in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.0.3.post3)\n", + "Requirement already satisfied: latex2mathml in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.77.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from Jinja2>=3.1.2->flask>3.0->pyserini>=0.43.0->rank-llm) (3.0.2)\n", + "Requirement already satisfied: mdurl~=0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown-it-py>=2.2.0->rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.1.2)\n", + "Requirement already satisfied: six>=1.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (1.17.0)\n", + "Requirement already satisfied: humanfriendly>=9.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from coloredlogs->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (10.0)\n", + "Requirement already satisfied: svgwrite in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from wavedrom->markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.4.3)\n", + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "id": "rAesontNXpLu" + }, "outputs": [], "source": [ - "def build_data():\n", - " for doc in products:\n", - " yield {\"_index\": INDEX_NAME, \"_source\": doc}\n", - "\n", + "import os\n", + "import nest_asyncio\n", + "from getpass import getpass\n", "\n", - "try:\n", - " success, errors = bulk(_client, build_data())\n", - " print(f\"{success} documents indexed successfully\")\n", + "from llama_index.core import Document, VectorStoreIndex, QueryBundle, Settings\n", + "from llama_index.core.retrievers import VectorIndexRetriever\n", + "from llama_index.postprocessor.rankgpt_rerank import RankGPTRerank\n", + "from llama_index.llms.openai import OpenAI\n", "\n", - " if errors:\n", - " print(\"Errors during indexing:\", errors)\n", "\n", - "except Exception as e:\n", - " print(f\"Error: {str(e)}\")" + "nest_asyncio.apply()" ] }, { "cell_type": "markdown", "metadata": { - "id": "P53v_KzjH9Ab" + "id": "NwOmnk99Pfh3" }, "source": [ - "## LlamaIndex re-rankers" + "### Setup keys" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "id": "GVKJKfFpPWuj" + }, "outputs": [], "source": [ - "rerank_promt = \"Best laptops for developers and designers\"" + "os.environ[\"OPENAI_API_KEY\"] = getpass(\"OpenAI Key: \")" ] }, { "cell_type": "markdown", - "metadata": { - "id": "EIvU-vxKpKhy" - }, + "metadata": {}, "source": [ - "### documents formating" + "### Indexing data to llamaIndex" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "id": "i2fZZLDgxtPu" }, @@ -435,16 +428,14 @@ }, { "cell_type": "markdown", - "metadata": { - "id": "kFoBUbx_nJMJ" - }, + "metadata": {}, "source": [ - "### LLM endpoint" + "### LLM setup" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -453,21 +444,15 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "kSrlRYAEWBSA" - }, - "outputs": [], + "cell_type": "markdown", + "metadata": {}, "source": [ - "index = VectorStoreIndex.from_documents(\n", - " document_objects,\n", - ")" + "### LlamaIndex rerank feature" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "id": "cAYwonikXP8b" }, @@ -475,7 +460,7 @@ "source": [ "# Re-rank method\n", "def get_retrieved_nodes(\n", - " query_str, vector_top_k=10, reranker_top_n=3, with_reranker=False\n", + " query_str, vector_top_k=10, reranker_top_n=5, with_reranker=False\n", "):\n", " query_bundle = QueryBundle(query_str)\n", " # configure retriever\n", @@ -486,7 +471,7 @@ " retrieved_nodes = retriever.retrieve(query_bundle)\n", "\n", " if with_reranker:\n", - " # configure re-ranker\n", + " # configure reranker\n", " reranker = RankGPTRerank(\n", " llm=OpenAI(\n", " model=\"gpt-3.5-turbo-16k\",\n", @@ -503,18 +488,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ + "# Function to format the resulting documents.\n", "def visualize_retrieved_nodes(nodes):\n", - " result_dicts = []\n", + " formatted_results = []\n", "\n", " for node in nodes:\n", - " result_dict = {\"Score\": node.score, \"Text\": node.node.get_text()}\n", - " result_dicts.append(result_dict)\n", + " text = node.node.get_text()\n", + "\n", + " product_name = text.split(\"Product Name:\")[1].split(\"\\n\")[0].strip()\n", + " price = text.split(\"Price:\")[1].split(\"\\n\")[0].strip()\n", + " reviews = text.split(\"Reviews:\")[1].split(\"\\n\")[0].strip()\n", + " features = text.split(\"Features:\")[1].strip()\n", "\n", - " return result_dicts" + " formatted_result = f\"{price} - {product_name} ({reviews}) {features}\"\n", + " formatted_results.append(formatted_result)\n", + "\n", + " return formatted_results" ] }, { @@ -523,12 +516,12 @@ "id": "PMFhgK9CXTze" }, "source": [ - "### Without re-rank" + "### Without rerank" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 72, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -537,29 +530,45 @@ "id": "MNcpUJsKXZPK", "outputId": "58b4a8b9-a10f-4eae-f727-3268e953b806" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Top 5 results without rerank:\n", + "1. $2499.99 - Razer Blade 15 (4.6 stars) Intel Core i7, RTX 4060, 16GB RAM, 1TB SSD, 240Hz Display\n", + "2. $1899.99 - ASUS ROG Strix G16 (4.7 stars) Intel Core i9, RTX 4070, 16GB RAM, 512GB SSD, 165Hz Display\n", + "3. $1999.99 - Gigabyte AORUS 17 (4.6 stars) Intel Core i9, RTX 4070, 16GB RAM, 1TB SSD, 360Hz Display\n", + "4. $2799.99 - MSI Stealth 17 (4.8 stars) Intel Core i9, RTX 4080, 32GB RAM, 1TB SSD, 4K Display\n", + "5. $2999.99 - Alienware m18 (4.8 stars) Intel Core i9, RTX 4090, 32GB RAM, 2TB SSD, 480Hz Display\n" + ] + } + ], "source": [ "new_nodes = get_retrieved_nodes(\n", - " rerank_promt,\n", - " vector_top_k=12,\n", + " user_query,\n", + " vector_top_k=5,\n", " with_reranker=False,\n", ")\n", "\n", - "results = visualize_retrieved_nodes(new_nodes[:3])\n", + "results = visualize_retrieved_nodes(new_nodes)\n", "\n", - "print(f\"Top 3 results without reranking: {json.dumps(results, indent=2)}\")" + "print(\"\\nTop 5 results without rerank:\")\n", + "for idx, result in enumerate(results, start=1):\n", + " print(f\"{idx}. {result}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### With re-rank" + "### With rerank" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 71, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -568,36 +577,268 @@ "id": "JXTnX6rrIa-D", "outputId": "c12b1e40-07b2-47b2-a3c9-fcbc1e81a47f" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "After Reranking, new rank list for nodes: [1, 4, 3, 2, 0]\n", + "Top 5 results with reranking:\n", + "1. $1899.99 - ASUS ROG Strix G16 (4.7 stars) Intel Core i9, RTX 4070, 16GB RAM, 512GB SSD, 165Hz Display\n", + "2. $2999.99 - Alienware m18 (4.8 stars) Intel Core i9, RTX 4090, 32GB RAM, 2TB SSD, 480Hz Display\n", + "3. $2799.99 - MSI Stealth 17 (4.8 stars) Intel Core i9, RTX 4080, 32GB RAM, 1TB SSD, 4K Display\n", + "4. $1999.99 - Gigabyte AORUS 17 (4.6 stars) Intel Core i9, RTX 4070, 16GB RAM, 1TB SSD, 360Hz Display\n", + "5. $2499.99 - Razer Blade 15 (4.6 stars) Intel Core i7, RTX 4060, 16GB RAM, 1TB SSD, 240Hz Display\n" + ] + } + ], "source": [ "new_nodes = get_retrieved_nodes(\n", - " rerank_promt,\n", - " vector_top_k=12,\n", - " reranker_top_n=3,\n", + " user_query,\n", + " vector_top_k=5,\n", + " reranker_top_n=5,\n", " with_reranker=True,\n", ")\n", "\n", - "results = visualize_retrieved_nodes(new_nodes[:3])\n", - "print(f\"Top 3 results with reranking: {json.dumps(results, indent=2)}\")" + "results = visualize_retrieved_nodes(new_nodes)\n", + "\n", + "print(\"\\nTop 5 results with reranking:\")\n", + "for idx, result in enumerate(results, start=1):\n", + " print(f\"{idx}. {result}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Elasticsearch Reranking" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Installing dependencies and import packages" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: elasticsearch==8.17 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (8.17.0)\n", + "Requirement already satisfied: elastic-transport<9,>=8.15.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from elasticsearch==8.17) (8.17.0)\n", + "Requirement already satisfied: urllib3<3,>=1.26.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from elastic-transport<9,>=8.15.1->elasticsearch==8.17) (2.3.0)\n", + "Requirement already satisfied: certifi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from elastic-transport<9,>=8.15.1->elasticsearch==8.17) (2025.1.31)\n", + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install elasticsearch==8.17" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "from elasticsearch import Elasticsearch\n", + "from elasticsearch.helpers import bulk" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup keys" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"ELASTICSEARCH_ENDPOINT\"] = getpass(\"Elastic Endpoint: \")\n", + "os.environ[\"ELASTICSEARCH_API_KEY\"] = getpass(\"Elastic Api Key: \")\n", + "\n", + "INDEX_NAME = \"products-laptops\"\n", + "INFERENCE_RERANK_NAME = \"my-elastic-rerank\"" ] }, { "cell_type": "markdown", "metadata": { - "id": "k7D6EHPdnpr1" + "id": "3O2HclcYHEsS" }, "source": [ - "## Elasticsearch re-rankers" + "### Elasticsearch client" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, + "metadata": { + "id": "EHYHU2-1nUeW" + }, + "outputs": [], + "source": [ + "_client = Elasticsearch(\n", + " os.environ[\"ELASTICSEARCH_ENDPOINT\"],\n", + " api_key=os.environ[\"ELASTICSEARCH_API_KEY\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mappings" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "index created successfully\n" + ] + } + ], + "source": [ + "try:\n", + " _client.indices.create(\n", + " index=INDEX_NAME,\n", + " body={\n", + " \"mappings\": {\n", + " \"properties\": {\n", + " \"name\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", + " \"description\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", + " \"price\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", + " \"reviews\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", + " \"sales\": {\"type\": \"integer\", \"copy_to\": \"semantic_field\"},\n", + " \"features\": {\"type\": \"keyword\", \"copy_to\": \"semantic_field\"},\n", + " \"semantic_field\": {\"type\": \"semantic_text\"},\n", + " }\n", + " }\n", + " },\n", + " )\n", + "\n", + " print(\"index created successfully\")\n", + "except Exception as e:\n", + " print(\n", + " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Inference rerank endpoint" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Inference endpoint created successfully.\n" + ] + } + ], + "source": [ + "try:\n", + " _client.options(\n", + " request_timeout=60, max_retries=3, retry_on_timeout=True\n", + " ).inference.put(\n", + " task_type=\"rerank\",\n", + " inference_id=INFERENCE_RERANK_NAME,\n", + " body={\n", + " \"service\": \"elasticsearch\",\n", + " \"service_settings\": {\n", + " \"model_id\": \".rerank-v1\",\n", + " \"num_threads\": 1,\n", + " \"adaptive_allocations\": {\n", + " \"enabled\": True,\n", + " \"min_number_of_allocations\": 1,\n", + " \"max_number_of_allocations\": 4,\n", + " },\n", + " },\n", + " },\n", + " )\n", + "\n", + " print(\"Inference endpoint created successfully.\")\n", + "\n", + "except Exception as e:\n", + " print(\n", + " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ingesting documents to Elasticsearch" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12 documents indexed successfully\n" + ] + } + ], + "source": [ + "def build_data():\n", + " for doc in products:\n", + " yield {\"_index\": INDEX_NAME, \"_source\": doc}\n", + "\n", + "\n", + "try:\n", + " success, errors = bulk(_client, build_data())\n", + " print(f\"{success} documents indexed successfully\")\n", + "\n", + " if errors:\n", + " print(\"Errors during indexing:\", errors)\n", + "\n", + "except Exception as e:\n", + " print(f\"Error: {str(e)}, please wait some seconds and try again.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 53, "metadata": { "id": "X0xbyG_fnoBU" }, "outputs": [], "source": [ + "# Function to execute search queries\n", "async def es_search(query):\n", " response = _client.search(index=INDEX_NAME, body=query)\n", " hits = response[\"hits\"][\"hits\"]\n", @@ -605,23 +846,65 @@ " if not hits:\n", " return \"\"\n", "\n", - " return json.dumps([hit[\"_source\"] for hit in hits], indent=2)" + " return hits" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ - "# Query with semantic search\n", - "result = await es_search(\n", + "# Function to format the results\n", + "def format_es_results(hits):\n", + " formatted_results = []\n", + "\n", + " for hit in hits:\n", + " source = hit[\"_source\"]\n", + " name = source.get(\"name\")\n", + " price = source.get(\"price\")\n", + " reviews = source.get(\"reviews\")\n", + " features = source.get(\"features\")\n", + "\n", + " formatted_result = f\"{price} - {name} ({reviews}) {features}\"\n", + " formatted_results.append(formatted_result)\n", + "\n", + " return formatted_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Semantic query" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query results:\n", + "1. 2999.99 - Alienware m18 (4.8) ['Intel Core i9', 'RTX 4090', '32GB RAM', '2TB SSD', '480Hz Display']\n", + "2. 2799.99 - MSI Stealth 17 (4.8) ['Intel Core i9', 'RTX 4080', '32GB RAM', '1TB SSD', '4K Display']\n", + "3. 1599.99 - HP Omen 16 (4.4) ['AMD Ryzen 7', 'RTX 3060', '16GB RAM', '512GB SSD', '165Hz Display']\n", + "4. 1399.99 - Acer Predator Helios 300 (4.5) ['Intel Core i7', 'RTX 3060', '16GB RAM', '512GB SSD', '144Hz Display']\n", + "5. 1999.99 - Gigabyte AORUS 17 (4.6) ['Intel Core i9', 'RTX 4070', '16GB RAM', '1TB SSD', '360Hz Display']\n" + ] + } + ], + "source": [ + "semantic_results = await es_search(\n", " {\n", - " \"size\": 3,\n", + " \"size\": 5,\n", " \"query\": {\n", " \"semantic\": {\n", " \"field\": \"semantic_field\",\n", - " \"query\": rerank_promt,\n", + " \"query\": user_query,\n", " }\n", " },\n", " \"_source\": {\n", @@ -637,12 +920,16 @@ " }\n", ")\n", "\n", - "print(f\"Query result: {result}\")" + "semantic_formatted_results = format_es_results(semantic_results)\n", + "\n", + "print(\"Query results:\")\n", + "for idx, result in enumerate(semantic_formatted_results, start=1):\n", + " print(f\"{idx}. {result}\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 70, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -650,11 +937,24 @@ "id": "ME8w7MR4orci", "outputId": "c8495176-ef78-4fb2-8cd8-6ca6c25b0811" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query results:\n", + "1. 1399.99 - Acer Predator Helios 300 (4.5) ['Intel Core i7', 'RTX 3060', '16GB RAM', '512GB SSD', '144Hz Display']\n", + "2. 2999.99 - Alienware m18 (4.8) ['Intel Core i9', 'RTX 4090', '32GB RAM', '2TB SSD', '480Hz Display']\n", + "3. 2799.99 - MSI Stealth 17 (4.8) ['Intel Core i9', 'RTX 4080', '32GB RAM', '1TB SSD', '4K Display']\n", + "4. 1999.99 - Gigabyte AORUS 17 (4.6) ['Intel Core i9', 'RTX 4070', '16GB RAM', '1TB SSD', '360Hz Display']\n", + "5. 1599.99 - HP Omen 16 (4.4) ['AMD Ryzen 7', 'RTX 3060', '16GB RAM', '512GB SSD', '165Hz Display']\n" + ] + } + ], "source": [ - "results = await es_search(\n", + "rerank_results = await es_search(\n", " {\n", - " \"size\": 3,\n", + " \"size\": 5,\n", " \"_source\": {\n", " \"includes\": [\n", " \"name\",\n", @@ -672,21 +972,25 @@ " \"query\": {\n", " \"semantic\": {\n", " \"field\": \"semantic_field\",\n", - " \"query\": rerank_promt,\n", + " \"query\": user_query,\n", " }\n", " }\n", " }\n", " },\n", - " \"field\": \"text\",\n", + " \"field\": \"semantic_field\",\n", " \"inference_id\": INFERENCE_RERANK_NAME,\n", - " \"inference_text\": rerank_promt,\n", - " \"rank_window_size\": 10,\n", - " \"min_score\": 0.5,\n", + " \"inference_text\": \"reorder by quality-price ratio\",\n", + " \"rank_window_size\": 5,\n", " }\n", " },\n", " }\n", ")\n", - "print(f\"Query result: {result}\")" + "\n", + "rerank_formatted_results = format_es_results(rerank_results)\n", + "\n", + "print(\"Query results:\")\n", + "for idx, result in enumerate(rerank_formatted_results, start=1):\n", + " print(f\"{idx}. {result}\")" ] }, { @@ -702,9 +1006,40 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/5w/qq_73hhn37v6k0qn0gqscwsw0000gn/T/ipykernel_22470/2652817320.py:10: DeprecationWarning: Passing transport options in the API method is deprecated. Use 'Elasticsearch.options()' instead.\n", + " result = _client.indices.delete(index=INDEX_NAME, ignore=[400, 404])\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DELETED successfully.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/5w/qq_73hhn37v6k0qn0gqscwsw0000gn/T/ipykernel_22470/2652817320.py:15: DeprecationWarning: Passing transport options in the API method is deprecated. Use 'Elasticsearch.options()' instead.\n", + " result = _client.inference.delete(inference_id=INFERENCE_RERANK_NAME, ignore=[400, 404])\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DELETED successfully.\n" + ] + } + ], "source": [ "def print_results(results):\n", " if results.get(\"acknowledged\", False):\n", From 388a2d7c42f072611ae60401fc18009850ee535f Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Wed, 7 May 2025 10:08:27 -0500 Subject: [PATCH 04/11] Upgrading elastic library to v9 --- .../llamaindex_rerank_notebook.ipynb | 307 ++---------------- 1 file changed, 31 insertions(+), 276 deletions(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index e7aadd4a..67850775 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "id": "LVr6TR8qlw2M" }, @@ -194,7 +194,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -219,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -228,127 +228,7 @@ "id": "D1SqWMbbASRS", "outputId": "8ab3bb5d-5d3c-4244-f14c-c303c7ab4f6f" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: llama-index-core in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.12.25)\n", - "Requirement already satisfied: llama-index-llms-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.25)\n", - "Requirement already satisfied: rank-llm in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.21.0)\n", - "Requirement already satisfied: llama-index-postprocessor-rankgpt-rerank in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.0)\n", - "Requirement already satisfied: llama-index-embeddings-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.1)\n", - "Requirement already satisfied: PyYAML>=6.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (6.0.2)\n", - "Requirement already satisfied: SQLAlchemy>=1.4.49 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (2.0.38)\n", - "Requirement already satisfied: aiohttp<4.0.0,>=3.8.6 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.11.13)\n", - "Requirement already satisfied: dataclasses-json in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.6.7)\n", - "Requirement already satisfied: deprecated>=1.2.9.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.18)\n", - "Requirement already satisfied: dirtyjson<2.0.0,>=1.0.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.0.8)\n", - "Requirement already satisfied: filetype<2.0.0,>=1.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.0)\n", - "Requirement already satisfied: fsspec>=2023.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2025.2.0)\n", - "Requirement already satisfied: httpx in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.28.1)\n", - "Requirement already satisfied: nest-asyncio<2.0.0,>=1.5.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.6.0)\n", - "Requirement already satisfied: networkx>=3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.4.2)\n", - "Requirement already satisfied: nltk>3.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.9.1)\n", - "Requirement already satisfied: numpy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.2.3)\n", - "Requirement already satisfied: pillow>=9.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (11.1.0)\n", - "Requirement already satisfied: pydantic>=2.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.10.6)\n", - "Requirement already satisfied: requests>=2.31.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.32.3)\n", - "Requirement already satisfied: tenacity!=8.4.0,<10.0.0,>=8.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (9.0.0)\n", - "Requirement already satisfied: tiktoken>=0.3.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.7.0)\n", - "Requirement already satisfied: tqdm<5.0.0,>=4.66.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.67.1)\n", - "Requirement already satisfied: typing-extensions>=4.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.12.2)\n", - "Requirement already satisfied: typing-inspect>=0.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.9.0)\n", - "Requirement already satisfied: wrapt in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.17.2)\n", - "Requirement already satisfied: openai<2.0.0,>=1.58.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-llms-openai) (1.65.1)\n", - "Requirement already satisfied: transformers>=4.40.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (4.49.0)\n", - "Requirement already satisfied: pyserini>=0.43.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (0.44.0)\n", - "Requirement already satisfied: python-dotenv>=1.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.0.1)\n", - "Requirement already satisfied: faiss-cpu>=1.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.10.0)\n", - "Requirement already satisfied: ftfy>=6.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (6.3.1)\n", - "Requirement already satisfied: dacite>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.9.2)\n", - "Requirement already satisfied: fschat>=0.2.36 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.36)\n", - "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (2.4.6)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.3.2)\n", - "Requirement already satisfied: attrs>=17.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (25.1.0)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.5.0)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (6.1.0)\n", - "Requirement already satisfied: propcache>=0.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (0.3.0)\n", - "Requirement already satisfied: yarl<2.0,>=1.17.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.18.3)\n", - "Requirement already satisfied: packaging in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from faiss-cpu>=1.8.0->rank-llm) (24.2)\n", - "Requirement already satisfied: fastapi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.115.11)\n", - "Requirement already satisfied: markdown2[all] in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.5.3)\n", - "Requirement already satisfied: nh3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.2.21)\n", - "Requirement already satisfied: prompt-toolkit>=3.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.50)\n", - "Requirement already satisfied: rich>=10.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (13.9.4)\n", - "Requirement already satisfied: shortuuid in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.0.13)\n", - "Requirement already satisfied: uvicorn in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.34.0)\n", - "Requirement already satisfied: accelerate>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (1.5.2)\n", - "Requirement already satisfied: peft in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.15.1)\n", - "Requirement already satisfied: sentencepiece in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.0)\n", - "Requirement already satisfied: torch in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (2.6.0)\n", - "Requirement already satisfied: protobuf in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (5.29.3)\n", - "Requirement already satisfied: wcwidth in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from ftfy>=6.2.0->rank-llm) (0.2.13)\n", - "Requirement already satisfied: click in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (8.1.8)\n", - "Requirement already satisfied: joblib in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (1.4.2)\n", - "Requirement already satisfied: regex>=2021.8.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (2024.11.6)\n", - "Requirement already satisfied: anyio<5,>=3.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (4.8.0)\n", - "Requirement already satisfied: distro<2,>=1.7.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.9.0)\n", - "Requirement already satisfied: jiter<1,>=0.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (0.8.2)\n", - "Requirement already satisfied: sniffio in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.3.1)\n", - "Requirement already satisfied: certifi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (2025.1.31)\n", - "Requirement already satisfied: httpcore==1.* in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (1.0.7)\n", - "Requirement already satisfied: idna in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (3.10)\n", - "Requirement already satisfied: h11<0.15,>=0.13 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpcore==1.*->httpx->llama-index-core) (0.14.0)\n", - "Requirement already satisfied: annotated-types>=0.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (0.7.0)\n", - "Requirement already satisfied: pydantic-core==2.27.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (2.27.2)\n", - "Requirement already satisfied: Cython>=0.29.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.0.12)\n", - "Requirement already satisfied: pandas>=1.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (2.2.3)\n", - "Requirement already satisfied: pyjnius>=1.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", - "Requirement already satisfied: scikit-learn>=0.22.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", - "Requirement already satisfied: scipy>=1.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.15.2)\n", - "Requirement already satisfied: onnxruntime>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.20.1)\n", - "Requirement already satisfied: flask>3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.1.0)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (3.4.1)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (2.3.0)\n", - "Requirement already satisfied: greenlet!=0.4.17 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (3.1.1)\n", - "Requirement already satisfied: filelock in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (3.17.0)\n", - "Requirement already satisfied: huggingface-hub<1.0,>=0.26.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.29.1)\n", - "Requirement already satisfied: tokenizers<0.22,>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.21.1)\n", - "Requirement already satisfied: safetensors>=0.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.5.3)\n", - "Requirement already satisfied: mypy-extensions>=0.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from typing-inspect>=0.8.0->llama-index-core) (1.0.0)\n", - "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from dataclasses-json->llama-index-core) (3.26.1)\n", - "Requirement already satisfied: psutil in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from accelerate>=0.21->fschat[model_worker]>=0.2.36->rank-llm) (7.0.0)\n", - "Requirement already satisfied: Werkzeug>=3.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.3)\n", - "Requirement already satisfied: Jinja2>=3.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.5)\n", - "Requirement already satisfied: itsdangerous>=2.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (2.2.0)\n", - "Requirement already satisfied: blinker>=1.9 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (1.9.0)\n", - "Requirement already satisfied: coloredlogs in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (15.0.1)\n", - "Requirement already satisfied: flatbuffers in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (25.2.10)\n", - "Requirement already satisfied: sympy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.13.1)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2.9.0.post0)\n", - "Requirement already satisfied: pytz>=2020.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2024.2)\n", - "Requirement already satisfied: tzdata>=2022.7 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2025.1)\n", - "Requirement already satisfied: markdown-it-py>=2.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.0)\n", - "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.19.1)\n", - "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from scikit-learn>=0.22.1->pyserini>=0.43.0->rank-llm) (3.6.0)\n", - "Requirement already satisfied: setuptools in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from torch->fschat[model_worker]>=0.2.36->rank-llm) (75.8.2)\n", - "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from sympy->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.3.0)\n", - "Requirement already satisfied: starlette<0.47.0,>=0.40.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fastapi->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.46.0)\n", - "Requirement already satisfied: wavedrom in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.0.3.post3)\n", - "Requirement already satisfied: latex2mathml in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.77.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from Jinja2>=3.1.2->flask>3.0->pyserini>=0.43.0->rank-llm) (3.0.2)\n", - "Requirement already satisfied: mdurl~=0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown-it-py>=2.2.0->rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.1.2)\n", - "Requirement already satisfied: six>=1.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (1.17.0)\n", - "Requirement already satisfied: humanfriendly>=9.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from coloredlogs->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (10.0)\n", - "Requirement already satisfied: svgwrite in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from wavedrom->markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.4.3)\n", - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], + "outputs": [], "source": [ "%pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai" ] @@ -403,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "i2fZZLDgxtPu" }, @@ -435,7 +315,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -452,7 +332,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "id": "cAYwonikXP8b" }, @@ -488,7 +368,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -521,7 +401,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -530,21 +410,7 @@ "id": "MNcpUJsKXZPK", "outputId": "58b4a8b9-a10f-4eae-f727-3268e953b806" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Top 5 results without rerank:\n", - "1. $2499.99 - Razer Blade 15 (4.6 stars) Intel Core i7, RTX 4060, 16GB RAM, 1TB SSD, 240Hz Display\n", - "2. $1899.99 - ASUS ROG Strix G16 (4.7 stars) Intel Core i9, RTX 4070, 16GB RAM, 512GB SSD, 165Hz Display\n", - "3. $1999.99 - Gigabyte AORUS 17 (4.6 stars) Intel Core i9, RTX 4070, 16GB RAM, 1TB SSD, 360Hz Display\n", - "4. $2799.99 - MSI Stealth 17 (4.8 stars) Intel Core i9, RTX 4080, 32GB RAM, 1TB SSD, 4K Display\n", - "5. $2999.99 - Alienware m18 (4.8 stars) Intel Core i9, RTX 4090, 32GB RAM, 2TB SSD, 480Hz Display\n" - ] - } - ], + "outputs": [], "source": [ "new_nodes = get_retrieved_nodes(\n", " user_query,\n", @@ -568,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -577,21 +443,7 @@ "id": "JXTnX6rrIa-D", "outputId": "c12b1e40-07b2-47b2-a3c9-fcbc1e81a47f" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "After Reranking, new rank list for nodes: [1, 4, 3, 2, 0]\n", - "Top 5 results with reranking:\n", - "1. $1899.99 - ASUS ROG Strix G16 (4.7 stars) Intel Core i9, RTX 4070, 16GB RAM, 512GB SSD, 165Hz Display\n", - "2. $2999.99 - Alienware m18 (4.8 stars) Intel Core i9, RTX 4090, 32GB RAM, 2TB SSD, 480Hz Display\n", - "3. $2799.99 - MSI Stealth 17 (4.8 stars) Intel Core i9, RTX 4080, 32GB RAM, 1TB SSD, 4K Display\n", - "4. $1999.99 - Gigabyte AORUS 17 (4.6 stars) Intel Core i9, RTX 4070, 16GB RAM, 1TB SSD, 360Hz Display\n", - "5. $2499.99 - Razer Blade 15 (4.6 stars) Intel Core i7, RTX 4060, 16GB RAM, 1TB SSD, 240Hz Display\n" - ] - } - ], + "outputs": [], "source": [ "new_nodes = get_retrieved_nodes(\n", " user_query,\n", @@ -623,31 +475,16 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: elasticsearch==8.17 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (8.17.0)\n", - "Requirement already satisfied: elastic-transport<9,>=8.15.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from elasticsearch==8.17) (8.17.0)\n", - "Requirement already satisfied: urllib3<3,>=1.26.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from elastic-transport<9,>=8.15.1->elasticsearch==8.17) (2.3.0)\n", - "Requirement already satisfied: certifi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from elastic-transport<9,>=8.15.1->elasticsearch==8.17) (2025.1.31)\n", - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], + "outputs": [], "source": [ - "%pip install elasticsearch==8.17" + "%pip install elasticsearch==9.0" ] }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -686,7 +523,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "metadata": { "id": "EHYHU2-1nUeW" }, @@ -707,17 +544,9 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "index created successfully\n" - ] - } - ], + "outputs": [], "source": [ "try:\n", " _client.indices.create(\n", @@ -753,17 +582,9 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inference endpoint created successfully.\n" - ] - } - ], + "outputs": [], "source": [ "try:\n", " _client.options(\n", @@ -786,7 +607,6 @@ " )\n", "\n", " print(\"Inference endpoint created successfully.\")\n", - "\n", "except Exception as e:\n", " print(\n", " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", @@ -802,17 +622,9 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "12 documents indexed successfully\n" - ] - } - ], + "outputs": [], "source": [ "def build_data():\n", " for doc in products:\n", @@ -832,7 +644,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": { "id": "X0xbyG_fnoBU" }, @@ -851,7 +663,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -881,22 +693,9 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Query results:\n", - "1. 2999.99 - Alienware m18 (4.8) ['Intel Core i9', 'RTX 4090', '32GB RAM', '2TB SSD', '480Hz Display']\n", - "2. 2799.99 - MSI Stealth 17 (4.8) ['Intel Core i9', 'RTX 4080', '32GB RAM', '1TB SSD', '4K Display']\n", - "3. 1599.99 - HP Omen 16 (4.4) ['AMD Ryzen 7', 'RTX 3060', '16GB RAM', '512GB SSD', '165Hz Display']\n", - "4. 1399.99 - Acer Predator Helios 300 (4.5) ['Intel Core i7', 'RTX 3060', '16GB RAM', '512GB SSD', '144Hz Display']\n", - "5. 1999.99 - Gigabyte AORUS 17 (4.6) ['Intel Core i9', 'RTX 4070', '16GB RAM', '1TB SSD', '360Hz Display']\n" - ] - } - ], + "outputs": [], "source": [ "semantic_results = await es_search(\n", " {\n", @@ -929,7 +728,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -937,20 +736,7 @@ "id": "ME8w7MR4orci", "outputId": "c8495176-ef78-4fb2-8cd8-6ca6c25b0811" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Query results:\n", - "1. 1399.99 - Acer Predator Helios 300 (4.5) ['Intel Core i7', 'RTX 3060', '16GB RAM', '512GB SSD', '144Hz Display']\n", - "2. 2999.99 - Alienware m18 (4.8) ['Intel Core i9', 'RTX 4090', '32GB RAM', '2TB SSD', '480Hz Display']\n", - "3. 2799.99 - MSI Stealth 17 (4.8) ['Intel Core i9', 'RTX 4080', '32GB RAM', '1TB SSD', '4K Display']\n", - "4. 1999.99 - Gigabyte AORUS 17 (4.6) ['Intel Core i9', 'RTX 4070', '16GB RAM', '1TB SSD', '360Hz Display']\n", - "5. 1599.99 - HP Omen 16 (4.4) ['AMD Ryzen 7', 'RTX 3060', '16GB RAM', '512GB SSD', '165Hz Display']\n" - ] - } - ], + "outputs": [], "source": [ "rerank_results = await es_search(\n", " {\n", @@ -1006,40 +792,9 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/5w/qq_73hhn37v6k0qn0gqscwsw0000gn/T/ipykernel_22470/2652817320.py:10: DeprecationWarning: Passing transport options in the API method is deprecated. Use 'Elasticsearch.options()' instead.\n", - " result = _client.indices.delete(index=INDEX_NAME, ignore=[400, 404])\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "DELETED successfully.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/5w/qq_73hhn37v6k0qn0gqscwsw0000gn/T/ipykernel_22470/2652817320.py:15: DeprecationWarning: Passing transport options in the API method is deprecated. Use 'Elasticsearch.options()' instead.\n", - " result = _client.inference.delete(inference_id=INFERENCE_RERANK_NAME, ignore=[400, 404])\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "DELETED successfully.\n" - ] - } - ], + "outputs": [], "source": [ "def print_results(results):\n", " if results.get(\"acknowledged\", False):\n", From 18557f9d718d159c69ab038b8c1a1e35161fc4de Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Tue, 20 May 2025 17:43:41 -0500 Subject: [PATCH 05/11] Fixing issues --- .../llamaindex_rerank_notebook.ipynb | 136 +++++++++++++++++- 1 file changed, 130 insertions(+), 6 deletions(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index 67850775..578cafe0 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -8,7 +8,7 @@ "source": [ "# LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review\n", "\n", - "This notebook demonstrates how to use AutoGen with Elasticsearch. This notebook is based on the article [LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review](https://www.elastic.co/search-labs/blog/llamaIndex-reranker-and-elasticsearch-reranker-comparison-review)." + "This notebook is based on the article [LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review](https://www.elastic.co/search-labs/blog/llamaIndex-reranker-and-elasticsearch-reranker-comparison-review) and have as main goal to compare the performance of the LlamaIndex re-ranker and the Elasticsearch re-ranker." ] }, { @@ -205,7 +205,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## LlamaIndex Reranking" + "## LlamaIndex Reranking\n", + "\n", + "In this section we will use the LlamaIndex re-ranker to re-rank the results of the search query." ] }, { @@ -219,7 +221,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -228,14 +230,134 @@ "id": "D1SqWMbbASRS", "outputId": "8ab3bb5d-5d3c-4244-f14c-c303c7ab4f6f" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: llama-index-core in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.12.25)\n", + "Requirement already satisfied: llama-index-llms-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.25)\n", + "Requirement already satisfied: rank-llm in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.21.0)\n", + "Requirement already satisfied: llama-index-postprocessor-rankgpt-rerank in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.0)\n", + "Requirement already satisfied: llama-index-embeddings-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.1)\n", + "Requirement already satisfied: PyYAML>=6.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (6.0.2)\n", + "Requirement already satisfied: SQLAlchemy>=1.4.49 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (2.0.38)\n", + "Requirement already satisfied: aiohttp<4.0.0,>=3.8.6 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.11.13)\n", + "Requirement already satisfied: dataclasses-json in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.6.7)\n", + "Requirement already satisfied: deprecated>=1.2.9.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.18)\n", + "Requirement already satisfied: dirtyjson<2.0.0,>=1.0.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.0.8)\n", + "Requirement already satisfied: filetype<2.0.0,>=1.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2025.2.0)\n", + "Requirement already satisfied: httpx in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.28.1)\n", + "Requirement already satisfied: nest-asyncio<2.0.0,>=1.5.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.6.0)\n", + "Requirement already satisfied: networkx>=3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.4.2)\n", + "Requirement already satisfied: nltk>3.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.9.1)\n", + "Requirement already satisfied: numpy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.2.3)\n", + "Requirement already satisfied: pillow>=9.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (11.1.0)\n", + "Requirement already satisfied: pydantic>=2.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.10.6)\n", + "Requirement already satisfied: requests>=2.31.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.32.3)\n", + "Requirement already satisfied: tenacity!=8.4.0,<10.0.0,>=8.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (9.0.0)\n", + "Requirement already satisfied: tiktoken>=0.3.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.7.0)\n", + "Requirement already satisfied: tqdm<5.0.0,>=4.66.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.67.1)\n", + "Requirement already satisfied: typing-extensions>=4.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.12.2)\n", + "Requirement already satisfied: typing-inspect>=0.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.9.0)\n", + "Requirement already satisfied: wrapt in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.17.2)\n", + "Requirement already satisfied: openai<2.0.0,>=1.58.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-llms-openai) (1.65.1)\n", + "Requirement already satisfied: transformers>=4.40.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (4.49.0)\n", + "Requirement already satisfied: pyserini>=0.43.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (0.44.0)\n", + "Requirement already satisfied: python-dotenv>=1.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.0.1)\n", + "Requirement already satisfied: faiss-cpu>=1.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.10.0)\n", + "Requirement already satisfied: ftfy>=6.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (6.3.1)\n", + "Requirement already satisfied: dacite>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.9.2)\n", + "Requirement already satisfied: fschat>=0.2.36 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.36)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (2.4.6)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.3.2)\n", + "Requirement already satisfied: attrs>=17.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (25.1.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.5.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (6.1.0)\n", + "Requirement already satisfied: propcache>=0.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (0.3.0)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.18.3)\n", + "Requirement already satisfied: packaging in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from faiss-cpu>=1.8.0->rank-llm) (24.2)\n", + "Requirement already satisfied: fastapi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.115.11)\n", + "Requirement already satisfied: markdown2[all] in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.5.3)\n", + "Requirement already satisfied: nh3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.2.21)\n", + "Requirement already satisfied: prompt-toolkit>=3.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.50)\n", + "Requirement already satisfied: rich>=10.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (13.9.4)\n", + "Requirement already satisfied: shortuuid in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.0.13)\n", + "Requirement already satisfied: uvicorn in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.34.0)\n", + "Requirement already satisfied: accelerate>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (1.5.2)\n", + "Requirement already satisfied: peft in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.15.1)\n", + "Requirement already satisfied: sentencepiece in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.0)\n", + "Requirement already satisfied: torch in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (2.6.0)\n", + "Requirement already satisfied: protobuf in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (5.29.3)\n", + "Requirement already satisfied: wcwidth in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from ftfy>=6.2.0->rank-llm) (0.2.13)\n", + "Requirement already satisfied: click in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (8.1.8)\n", + "Requirement already satisfied: joblib in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (1.4.2)\n", + "Requirement already satisfied: regex>=2021.8.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (2024.11.6)\n", + "Requirement already satisfied: anyio<5,>=3.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (4.8.0)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.9.0)\n", + "Requirement already satisfied: jiter<1,>=0.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (0.8.2)\n", + "Requirement already satisfied: sniffio in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.3.1)\n", + "Requirement already satisfied: certifi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (2025.1.31)\n", + "Requirement already satisfied: httpcore==1.* in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (1.0.7)\n", + "Requirement already satisfied: idna in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (3.10)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpcore==1.*->httpx->llama-index-core) (0.14.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.27.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (2.27.2)\n", + "Requirement already satisfied: Cython>=0.29.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.0.12)\n", + "Requirement already satisfied: pandas>=1.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (2.2.3)\n", + "Requirement already satisfied: pyjnius>=1.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", + "Requirement already satisfied: scikit-learn>=0.22.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", + "Requirement already satisfied: scipy>=1.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.15.2)\n", + "Requirement already satisfied: onnxruntime>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.20.1)\n", + "Requirement already satisfied: flask>3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.1.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (3.4.1)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (2.3.0)\n", + "Requirement already satisfied: greenlet!=0.4.17 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (3.1.1)\n", + "Requirement already satisfied: filelock in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (3.17.0)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.26.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.29.1)\n", + "Requirement already satisfied: tokenizers<0.22,>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.21.1)\n", + "Requirement already satisfied: safetensors>=0.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.5.3)\n", + "Requirement already satisfied: mypy-extensions>=0.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from typing-inspect>=0.8.0->llama-index-core) (1.0.0)\n", + "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from dataclasses-json->llama-index-core) (3.26.1)\n", + "Requirement already satisfied: psutil in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from accelerate>=0.21->fschat[model_worker]>=0.2.36->rank-llm) (7.0.0)\n", + "Requirement already satisfied: Werkzeug>=3.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.3)\n", + "Requirement already satisfied: Jinja2>=3.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.5)\n", + "Requirement already satisfied: itsdangerous>=2.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (2.2.0)\n", + "Requirement already satisfied: blinker>=1.9 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (1.9.0)\n", + "Requirement already satisfied: coloredlogs in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (15.0.1)\n", + "Requirement already satisfied: flatbuffers in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (25.2.10)\n", + "Requirement already satisfied: sympy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.13.1)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2025.1)\n", + "Requirement already satisfied: markdown-it-py>=2.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.0)\n", + "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.19.1)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from scikit-learn>=0.22.1->pyserini>=0.43.0->rank-llm) (3.6.0)\n", + "Requirement already satisfied: setuptools in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from torch->fschat[model_worker]>=0.2.36->rank-llm) (75.8.2)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from sympy->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.3.0)\n", + "Requirement already satisfied: starlette<0.47.0,>=0.40.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fastapi->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.46.0)\n", + "Requirement already satisfied: wavedrom in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.0.3.post3)\n", + "Requirement already satisfied: latex2mathml in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.77.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from Jinja2>=3.1.2->flask>3.0->pyserini>=0.43.0->rank-llm) (3.0.2)\n", + "Requirement already satisfied: mdurl~=0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown-it-py>=2.2.0->rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.1.2)\n", + "Requirement already satisfied: six>=1.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (1.17.0)\n", + "Requirement already satisfied: humanfriendly>=9.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from coloredlogs->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (10.0)\n", + "Requirement already satisfied: svgwrite in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from wavedrom->markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.4.3)\n", + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.1.1\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], "source": [ "%pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "id": "rAesontNXpLu" }, @@ -463,7 +585,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Elasticsearch Reranking" + "## Elasticsearch Reranking\n", + "\n", + "In this section we will use the Elasticsearch re-ranker to re-rank the results of the search query." ] }, { From d721831372109e9625a9eb1c3e56c53e526248b3 Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Tue, 20 May 2025 18:25:03 -0500 Subject: [PATCH 06/11] Removing numeric fields from semantic_field --- .../llamaindex_rerank_notebook.ipynb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index 578cafe0..e956d705 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -680,9 +680,13 @@ " \"properties\": {\n", " \"name\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", " \"description\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", - " \"price\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", - " \"reviews\": {\"type\": \"float\", \"copy_to\": \"semantic_field\"},\n", - " \"sales\": {\"type\": \"integer\", \"copy_to\": \"semantic_field\"},\n", + " \"price\": {\n", + " \"type\": \"float\",\n", + " },\n", + " \"reviews\": {\n", + " \"type\": \"float\",\n", + " },\n", + " \"sales\": {\"type\": \"integer\"},\n", " \"features\": {\"type\": \"keyword\", \"copy_to\": \"semantic_field\"},\n", " \"semantic_field\": {\"type\": \"semantic_text\"},\n", " }\n", From 330f386efe878d2c929933a9f824c73b95532929 Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Fri, 30 May 2025 18:12:58 -0500 Subject: [PATCH 07/11] storing data in elasticsearch and using it for both, Elasticsearch an llama-index tests --- .../llamaindex_rerank_notebook.ipynb | 542 +++++++----------- 1 file changed, 193 insertions(+), 349 deletions(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index e956d705..cb9dbb89 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -21,6 +21,154 @@ { "cell_type": "code", "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "collapsed": true, + "id": "D1SqWMbbASRS", + "outputId": "8ab3bb5d-5d3c-4244-f14c-c303c7ab4f6f" + }, + "outputs": [], + "source": [ + "%pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai llama-index-vector-stores-elasticsearch elasticsearch -q" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "id": "rAesontNXpLu" + }, + "outputs": [], + "source": [ + "import os\n", + "import nest_asyncio\n", + "from getpass import getpass\n", + "\n", + "from llama_index.vector_stores.elasticsearch import ElasticsearchStore\n", + "from llama_index.core import (\n", + " Document,\n", + " VectorStoreIndex,\n", + " QueryBundle,\n", + " Settings,\n", + " StorageContext,\n", + ")\n", + "from llama_index.core.retrievers import VectorIndexRetriever\n", + "from llama_index.postprocessor.rankgpt_rerank import RankGPTRerank\n", + "from llama_index.llms.openai import OpenAI\n", + "\n", + "from elasticsearch import Elasticsearch\n", + "\n", + "nest_asyncio.apply()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup keys" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"ELASTICSEARCH_ENDPOINT\"] = getpass(\"Elastic Endpoint: \")\n", + "os.environ[\"ELASTICSEARCH_API_KEY\"] = getpass(\"Elastic Api Key: \")\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass(\"OpenAI Key: \")\n", + "\n", + "\n", + "INDEX_NAME = \"products-laptops\"\n", + "INFERENCE_RERANK_NAME = \"my-elastic-rerank\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3O2HclcYHEsS" + }, + "source": [ + "### Elasticsearch client" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "id": "EHYHU2-1nUeW" + }, + "outputs": [], + "source": [ + "_client = Elasticsearch(\n", + " os.environ[\"ELASTICSEARCH_ENDPOINT\"],\n", + " api_key=os.environ[\"ELASTICSEARCH_API_KEY\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mappings\n", + "\n", + "The mappings are defined to create the index in Elasticsearch. The `metadata` field is a nested field that contains the product information. The `semantic_field` is a field that is used to store the semantic representation of the product. The `embeddings` field is a dense vector field that is used to store the embeddings of the product used to perform the re-ranking with LlamaIndex." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " _client.indices.create(\n", + " index=INDEX_NAME,\n", + " body={\n", + " \"mappings\": {\n", + " \"properties\": {\n", + " \"metadata\": {\n", + " \"properties\": {\n", + " \"name\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", + " \"description\": {\n", + " \"type\": \"text\",\n", + " \"copy_to\": \"semantic_field\",\n", + " },\n", + " \"price\": {\n", + " \"type\": \"float\",\n", + " },\n", + " \"reviews\": {\n", + " \"type\": \"float\",\n", + " },\n", + " \"sales\": {\"type\": \"integer\"},\n", + " \"features\": {\n", + " \"type\": \"keyword\",\n", + " \"copy_to\": \"semantic_field\",\n", + " },\n", + " }\n", + " },\n", + " \"semantic_field\": {\"type\": \"semantic_text\"},\n", + " \"text\": {\n", + " \"type\": \"text\"\n", + " }, # Field to store the text content for LlamaIndex\n", + " \"embeddings\": {\"type\": \"dense_vector\", \"dims\": 512},\n", + " }\n", + " }\n", + " },\n", + " )\n", + "\n", + " print(\"index created successfully\")\n", + "except Exception as e:\n", + " print(\n", + " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 15, "metadata": { "id": "LVr6TR8qlw2M" }, @@ -194,7 +342,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -210,197 +358,13 @@ "In this section we will use the LlamaIndex re-ranker to re-rank the results of the search query." ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "GNaAN-GNO5qp" - }, - "source": [ - "### Installing dependencies and import packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "collapsed": true, - "id": "D1SqWMbbASRS", - "outputId": "8ab3bb5d-5d3c-4244-f14c-c303c7ab4f6f" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: llama-index-core in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.12.25)\n", - "Requirement already satisfied: llama-index-llms-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.25)\n", - "Requirement already satisfied: rank-llm in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.21.0)\n", - "Requirement already satisfied: llama-index-postprocessor-rankgpt-rerank in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.0)\n", - "Requirement already satisfied: llama-index-embeddings-openai in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (0.3.1)\n", - "Requirement already satisfied: PyYAML>=6.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (6.0.2)\n", - "Requirement already satisfied: SQLAlchemy>=1.4.49 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (2.0.38)\n", - "Requirement already satisfied: aiohttp<4.0.0,>=3.8.6 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.11.13)\n", - "Requirement already satisfied: dataclasses-json in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.6.7)\n", - "Requirement already satisfied: deprecated>=1.2.9.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.18)\n", - "Requirement already satisfied: dirtyjson<2.0.0,>=1.0.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.0.8)\n", - "Requirement already satisfied: filetype<2.0.0,>=1.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.2.0)\n", - "Requirement already satisfied: fsspec>=2023.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2025.2.0)\n", - "Requirement already satisfied: httpx in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.28.1)\n", - "Requirement already satisfied: nest-asyncio<2.0.0,>=1.5.8 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.6.0)\n", - "Requirement already satisfied: networkx>=3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.4.2)\n", - "Requirement already satisfied: nltk>3.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (3.9.1)\n", - "Requirement already satisfied: numpy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.2.3)\n", - "Requirement already satisfied: pillow>=9.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (11.1.0)\n", - "Requirement already satisfied: pydantic>=2.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.10.6)\n", - "Requirement already satisfied: requests>=2.31.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (2.32.3)\n", - "Requirement already satisfied: tenacity!=8.4.0,<10.0.0,>=8.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (9.0.0)\n", - "Requirement already satisfied: tiktoken>=0.3.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.7.0)\n", - "Requirement already satisfied: tqdm<5.0.0,>=4.66.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.67.1)\n", - "Requirement already satisfied: typing-extensions>=4.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (4.12.2)\n", - "Requirement already satisfied: typing-inspect>=0.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (0.9.0)\n", - "Requirement already satisfied: wrapt in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-core) (1.17.2)\n", - "Requirement already satisfied: openai<2.0.0,>=1.58.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from llama-index-llms-openai) (1.65.1)\n", - "Requirement already satisfied: transformers>=4.40.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (4.49.0)\n", - "Requirement already satisfied: pyserini>=0.43.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (0.44.0)\n", - "Requirement already satisfied: python-dotenv>=1.0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.0.1)\n", - "Requirement already satisfied: faiss-cpu>=1.8.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.10.0)\n", - "Requirement already satisfied: ftfy>=6.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (6.3.1)\n", - "Requirement already satisfied: dacite>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rank-llm) (1.9.2)\n", - "Requirement already satisfied: fschat>=0.2.36 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.36)\n", - "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (2.4.6)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.3.2)\n", - "Requirement already satisfied: attrs>=17.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (25.1.0)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.5.0)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (6.1.0)\n", - "Requirement already satisfied: propcache>=0.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (0.3.0)\n", - "Requirement already satisfied: yarl<2.0,>=1.17.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.8.6->llama-index-core) (1.18.3)\n", - "Requirement already satisfied: packaging in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from faiss-cpu>=1.8.0->rank-llm) (24.2)\n", - "Requirement already satisfied: fastapi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.115.11)\n", - "Requirement already satisfied: markdown2[all] in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.5.3)\n", - "Requirement already satisfied: nh3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.2.21)\n", - "Requirement already satisfied: prompt-toolkit>=3.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.50)\n", - "Requirement already satisfied: rich>=10.0.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (13.9.4)\n", - "Requirement already satisfied: shortuuid in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.0.13)\n", - "Requirement already satisfied: uvicorn in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.34.0)\n", - "Requirement already satisfied: accelerate>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (1.5.2)\n", - "Requirement already satisfied: peft in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.15.1)\n", - "Requirement already satisfied: sentencepiece in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (0.2.0)\n", - "Requirement already satisfied: torch in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (2.6.0)\n", - "Requirement already satisfied: protobuf in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fschat[model_worker]>=0.2.36->rank-llm) (5.29.3)\n", - "Requirement already satisfied: wcwidth in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from ftfy>=6.2.0->rank-llm) (0.2.13)\n", - "Requirement already satisfied: click in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (8.1.8)\n", - "Requirement already satisfied: joblib in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (1.4.2)\n", - "Requirement already satisfied: regex>=2021.8.3 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from nltk>3.8.1->llama-index-core) (2024.11.6)\n", - "Requirement already satisfied: anyio<5,>=3.5.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (4.8.0)\n", - "Requirement already satisfied: distro<2,>=1.7.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.9.0)\n", - "Requirement already satisfied: jiter<1,>=0.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (0.8.2)\n", - "Requirement already satisfied: sniffio in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from openai<2.0.0,>=1.58.1->llama-index-llms-openai) (1.3.1)\n", - "Requirement already satisfied: certifi in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (2025.1.31)\n", - "Requirement already satisfied: httpcore==1.* in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (1.0.7)\n", - "Requirement already satisfied: idna in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpx->llama-index-core) (3.10)\n", - "Requirement already satisfied: h11<0.15,>=0.13 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from httpcore==1.*->httpx->llama-index-core) (0.14.0)\n", - "Requirement already satisfied: annotated-types>=0.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (0.7.0)\n", - "Requirement already satisfied: pydantic-core==2.27.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pydantic>=2.8.0->llama-index-core) (2.27.2)\n", - "Requirement already satisfied: Cython>=0.29.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.0.12)\n", - "Requirement already satisfied: pandas>=1.4.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (2.2.3)\n", - "Requirement already satisfied: pyjnius>=1.6.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", - "Requirement already satisfied: scikit-learn>=0.22.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.6.1)\n", - "Requirement already satisfied: scipy>=1.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.15.2)\n", - "Requirement already satisfied: onnxruntime>=1.8.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (1.20.1)\n", - "Requirement already satisfied: flask>3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pyserini>=0.43.0->rank-llm) (3.1.0)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (3.4.1)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from requests>=2.31.0->llama-index-core) (2.3.0)\n", - "Requirement already satisfied: greenlet!=0.4.17 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from SQLAlchemy[asyncio]>=1.4.49->llama-index-core) (3.1.1)\n", - "Requirement already satisfied: filelock in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (3.17.0)\n", - "Requirement already satisfied: huggingface-hub<1.0,>=0.26.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.29.1)\n", - "Requirement already satisfied: tokenizers<0.22,>=0.21 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.21.1)\n", - "Requirement already satisfied: safetensors>=0.4.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from transformers>=4.40.1->rank-llm) (0.5.3)\n", - "Requirement already satisfied: mypy-extensions>=0.3.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from typing-inspect>=0.8.0->llama-index-core) (1.0.0)\n", - "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from dataclasses-json->llama-index-core) (3.26.1)\n", - "Requirement already satisfied: psutil in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from accelerate>=0.21->fschat[model_worker]>=0.2.36->rank-llm) (7.0.0)\n", - "Requirement already satisfied: Werkzeug>=3.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.3)\n", - "Requirement already satisfied: Jinja2>=3.1.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (3.1.5)\n", - "Requirement already satisfied: itsdangerous>=2.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (2.2.0)\n", - "Requirement already satisfied: blinker>=1.9 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from flask>3.0->pyserini>=0.43.0->rank-llm) (1.9.0)\n", - "Requirement already satisfied: coloredlogs in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (15.0.1)\n", - "Requirement already satisfied: flatbuffers in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (25.2.10)\n", - "Requirement already satisfied: sympy in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.13.1)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2.9.0.post0)\n", - "Requirement already satisfied: pytz>=2020.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2024.2)\n", - "Requirement already satisfied: tzdata>=2022.7 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (2025.1)\n", - "Requirement already satisfied: markdown-it-py>=2.2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.0.0)\n", - "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.19.1)\n", - "Requirement already satisfied: threadpoolctl>=3.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from scikit-learn>=0.22.1->pyserini>=0.43.0->rank-llm) (3.6.0)\n", - "Requirement already satisfied: setuptools in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from torch->fschat[model_worker]>=0.2.36->rank-llm) (75.8.2)\n", - "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from sympy->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (1.3.0)\n", - "Requirement already satisfied: starlette<0.47.0,>=0.40.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from fastapi->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.46.0)\n", - "Requirement already satisfied: wavedrom in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (2.0.3.post3)\n", - "Requirement already satisfied: latex2mathml in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (3.77.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from Jinja2>=3.1.2->flask>3.0->pyserini>=0.43.0->rank-llm) (3.0.2)\n", - "Requirement already satisfied: mdurl~=0.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from markdown-it-py>=2.2.0->rich>=10.0.0->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (0.1.2)\n", - "Requirement already satisfied: six>=1.5 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas>=1.4.0->pyserini>=0.43.0->rank-llm) (1.17.0)\n", - "Requirement already satisfied: humanfriendly>=9.1 in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from coloredlogs->onnxruntime>=1.8.1->pyserini>=0.43.0->rank-llm) (10.0)\n", - "Requirement already satisfied: svgwrite in /Users/jeffreyrengifo/.pyenv/versions/3.12.2/lib/python3.12/site-packages (from wavedrom->markdown2[all]->fschat>=0.2.36->fschat[model_worker]>=0.2.36->rank-llm) (1.4.3)\n", - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.0\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.1.1\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "rAesontNXpLu" - }, - "outputs": [], - "source": [ - "import os\n", - "import nest_asyncio\n", - "from getpass import getpass\n", - "\n", - "from llama_index.core import Document, VectorStoreIndex, QueryBundle, Settings\n", - "from llama_index.core.retrievers import VectorIndexRetriever\n", - "from llama_index.postprocessor.rankgpt_rerank import RankGPTRerank\n", - "from llama_index.llms.openai import OpenAI\n", - "\n", - "\n", - "nest_asyncio.apply()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NwOmnk99Pfh3" - }, - "source": [ - "### Setup keys" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "GVKJKfFpPWuj" - }, - "outputs": [], - "source": [ - "os.environ[\"OPENAI_API_KEY\"] = getpass(\"OpenAI Key: \")" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Indexing data to llamaIndex" + "### Indexing data to Elasticsearch\n", + "\n", + "The documents are indexed to Elasticsearch using the `ElasticsearchStore` class. This is a wrapper around the Elasticsearch client and inserts the documents into the Elasticsearch index in a `metadata` field." ] }, { @@ -413,6 +377,16 @@ "source": [ "document_objects = []\n", "\n", + "es_store = ElasticsearchStore(\n", + " es_url=os.environ[\"ELASTICSEARCH_ENDPOINT\"],\n", + " es_api_key=os.environ[\"ELASTICSEARCH_API_KEY\"],\n", + " index_name=INDEX_NAME,\n", + " embedding_field=\"embeddings\",\n", + " text_field=\"text\",\n", + ")\n", + "\n", + "storage_context = StorageContext.from_defaults(vector_store=es_store)\n", + "\n", "for doc in products:\n", " text_content = f\"\"\"\n", " Product Name: {doc[\"name\"]}\n", @@ -423,9 +397,21 @@ " Features: {', '.join(doc[\"features\"])}\n", " \"\"\"\n", "\n", - " document_objects.append(Document(text=text_content))\n", + " metadata = {\n", + " \"name\": doc[\"name\"],\n", + " \"description\": doc[\"description\"],\n", + " \"price\": doc[\"price\"],\n", + " \"reviews\": doc[\"reviews\"],\n", + " \"sales\": doc[\"sales\"],\n", + " \"features\": doc[\"features\"],\n", + " }\n", + "\n", + " document_objects.append(Document(text=text_content, metadata=metadata))\n", + "\n", + "index = VectorStoreIndex([], storage_context=storage_context)\n", "\n", - "index = VectorStoreIndex.from_documents(document_objects)" + "for doc in document_objects:\n", + " index.insert(doc)" ] }, { @@ -437,11 +423,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ - "Settings.llm = OpenAI(temperature=0, model=\"gpt-3.5-turbo\")\n", + "Settings.llm = OpenAI(temperature=0, model=\"gpt-3.5-turbo-16k\")\n", "Settings.chunk_size = 512" ] }, @@ -454,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "id": "cAYwonikXP8b" }, @@ -490,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -535,7 +521,7 @@ "outputs": [], "source": [ "new_nodes = get_retrieved_nodes(\n", - " user_query,\n", + " query_str=user_query,\n", " vector_top_k=5,\n", " with_reranker=False,\n", ")\n", @@ -594,118 +580,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Installing dependencies and import packages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%pip install elasticsearch==9.0" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from elasticsearch import Elasticsearch\n", - "from elasticsearch.helpers import bulk" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Setup keys" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "os.environ[\"ELASTICSEARCH_ENDPOINT\"] = getpass(\"Elastic Endpoint: \")\n", - "os.environ[\"ELASTICSEARCH_API_KEY\"] = getpass(\"Elastic Api Key: \")\n", - "\n", - "INDEX_NAME = \"products-laptops\"\n", - "INFERENCE_RERANK_NAME = \"my-elastic-rerank\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "3O2HclcYHEsS" - }, - "source": [ - "### Elasticsearch client" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "EHYHU2-1nUeW" - }, - "outputs": [], - "source": [ - "_client = Elasticsearch(\n", - " os.environ[\"ELASTICSEARCH_ENDPOINT\"],\n", - " api_key=os.environ[\"ELASTICSEARCH_API_KEY\"],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Mappings" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " _client.indices.create(\n", - " index=INDEX_NAME,\n", - " body={\n", - " \"mappings\": {\n", - " \"properties\": {\n", - " \"name\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", - " \"description\": {\"type\": \"text\", \"copy_to\": \"semantic_field\"},\n", - " \"price\": {\n", - " \"type\": \"float\",\n", - " },\n", - " \"reviews\": {\n", - " \"type\": \"float\",\n", - " },\n", - " \"sales\": {\"type\": \"integer\"},\n", - " \"features\": {\"type\": \"keyword\", \"copy_to\": \"semantic_field\"},\n", - " \"semantic_field\": {\"type\": \"semantic_text\"},\n", - " }\n", - " }\n", - " },\n", - " )\n", - "\n", - " print(\"index created successfully\")\n", - "except Exception as e:\n", - " print(\n", - " f\"Error creating inference endpoint: {e.info['error']['root_cause'][0]['reason'] }\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Inference rerank endpoint" + "### Crating inference rerank endpoint" ] }, { @@ -745,34 +620,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Ingesting documents to Elasticsearch" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def build_data():\n", - " for doc in products:\n", - " yield {\"_index\": INDEX_NAME, \"_source\": doc}\n", - "\n", - "\n", - "try:\n", - " success, errors = bulk(_client, build_data())\n", - " print(f\"{success} documents indexed successfully\")\n", - "\n", - " if errors:\n", - " print(\"Errors during indexing:\", errors)\n", - "\n", - "except Exception as e:\n", - " print(f\"Error: {str(e)}, please wait some seconds and try again.\")" + "### Function to execute search queries" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": { "id": "X0xbyG_fnoBU" }, @@ -791,7 +644,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -800,11 +653,12 @@ " formatted_results = []\n", "\n", " for hit in hits:\n", - " source = hit[\"_source\"]\n", - " name = source.get(\"name\")\n", - " price = source.get(\"price\")\n", - " reviews = source.get(\"reviews\")\n", - " features = source.get(\"features\")\n", + " metadata = hit[\"_source\"][\"metadata\"]\n", + "\n", + " name = metadata.get(\"name\")\n", + " price = metadata.get(\"price\")\n", + " reviews = metadata.get(\"reviews\")\n", + " features = metadata.get(\"features\")\n", "\n", " formatted_result = f\"{price} - {name} ({reviews}) {features}\"\n", " formatted_results.append(formatted_result)\n", @@ -836,12 +690,7 @@ " },\n", " \"_source\": {\n", " \"includes\": [\n", - " \"name\",\n", - " \"description\",\n", - " \"price\",\n", - " \"reviews\",\n", - " \"sales\",\n", - " \"features\",\n", + " \"metadata\",\n", " ]\n", " },\n", " }\n", @@ -871,12 +720,7 @@ " \"size\": 5,\n", " \"_source\": {\n", " \"includes\": [\n", - " \"name\",\n", - " \"description\",\n", - " \"price\",\n", - " \"reviews\",\n", - " \"sales\",\n", - " \"features\",\n", + " \"metadata\",\n", " ]\n", " },\n", " \"retriever\": {\n", From 15dcd9eac4f9eb69ad9a712369516cc240b20957 Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Fri, 30 May 2025 18:19:49 -0500 Subject: [PATCH 08/11] Removing dependencies --- .../llamaindex_rerank_notebook.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index cb9dbb89..a469fbbc 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -31,7 +31,7 @@ }, "outputs": [], "source": [ - "%pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-embeddings-openai llama-index-vector-stores-elasticsearch elasticsearch -q" + "%pip install llama-index-core llama-index-llms-openai rank-llm llama-index-postprocessor-rankgpt-rerank llama-index-vector-stores-elasticsearch elasticsearch -q" ] }, { From 653b0f266add37d71a428952968196a631c3ad7e Mon Sep 17 00:00:00 2001 From: Delacrobix Date: Thu, 3 Jul 2025 10:44:51 -0500 Subject: [PATCH 09/11] updaring model --- .../llamaindex_rerank_notebook.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index a469fbbc..50de3424 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -462,7 +462,7 @@ " # configure reranker\n", " reranker = RankGPTRerank(\n", " llm=OpenAI(\n", - " model=\"gpt-3.5-turbo-16k\",\n", + " model=\"gpt-4.1-mini\",\n", " temperature=0.0,\n", " api_key=os.environ[\"OPENAI_API_KEY\"],\n", " ),\n", @@ -795,7 +795,7 @@ "provenance": [] }, "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -809,7 +809,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.13.2" } }, "nbformat": 4, From f6513b400b63e31f9374a9ac18301cb2f23c51ed Mon Sep 17 00:00:00 2001 From: Jeffrey S Rengifo Marin <97353049+Delacrobix@users.noreply.github.com> Date: Mon, 7 Jul 2025 11:28:16 -0500 Subject: [PATCH 10/11] Update supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb Co-authored-by: Carly Richmond <74931905+carlyrichmond@users.noreply.github.com> --- .../llamaindex_rerank_notebook.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index 50de3424..baceb820 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -8,7 +8,7 @@ "source": [ "# LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review\n", "\n", - "This notebook is based on the article [LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review](https://www.elastic.co/search-labs/blog/llamaIndex-reranker-and-elasticsearch-reranker-comparison-review) and have as main goal to compare the performance of the LlamaIndex re-ranker and the Elasticsearch re-ranker." + "This notebook is based on the article [LlamaIndex re-ranker and Elasticsearch re-ranker: Comparison review](https://www.elastic.co/search-labs/blog/llamaIndex-reranker-and-elasticsearch-reranker-comparison-review) and has the main goal to compare the performance of the LlamaIndex re-ranker and the Elasticsearch re-ranker." ] }, { From 84320329140637f1716540a3c6daadad22c5f01b Mon Sep 17 00:00:00 2001 From: Jeffrey S Rengifo Marin <97353049+Delacrobix@users.noreply.github.com> Date: Mon, 7 Jul 2025 11:30:51 -0500 Subject: [PATCH 11/11] Update supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb Co-authored-by: Carly Richmond <74931905+carlyrichmond@users.noreply.github.com> --- .../llamaindex_rerank_notebook.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb index baceb820..a3701195 100644 --- a/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb +++ b/supporting-blog-content/llamaindex-re-ranker-and-elasticsearch-re-ranker/llamaindex_rerank_notebook.ipynb @@ -580,7 +580,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Crating inference rerank endpoint" + "### Creating inference rerank endpoint" ] }, {