{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# VoyageAI Rerank" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "If you're opening this Notebook on colab, you will probably need to install LlamaIndex 🦙." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\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;49m23.3.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\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 > /dev/null\n", "%pip install llama-index-postprocessor-voyageai-rerank > /dev/null\n", "%pip install llama-index-embeddings-voyageai > /dev/null" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from llama_index.core import VectorStoreIndex, SimpleDirectoryReader\n", "from llama_index.core.response.pprint_utils import pprint_response" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Download Data" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2024-05-09 17:56:26-- https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 2606:50c0:8003::154, 2606:50c0:8000::154, 2606:50c0:8002::154, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8003::154|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 75042 (73K) [text/plain]\n", "Saving to: ‘data/paul_graham/paul_graham_essay.txt’\n", "\n", "data/paul_graham/pa 100%[===================>] 73.28K --.-KB/s in 0.009s \n", "\n", "2024-05-09 17:56:26 (7.81 MB/s) - ‘data/paul_graham/paul_graham_essay.txt’ saved [75042/75042]\n", "\n" ] } ], "source": [ "!mkdir -p 'data/paul_graham/'\n", "!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import os\n", "from llama_index.embeddings.voyageai import VoyageEmbedding\n", "\n", "api_key = os.environ[\"VOYAGE_API_KEY\"]\n", "voyageai_embeddings = VoyageEmbedding(\n", " voyage_api_key=api_key, model_name=\"voyage-3\"\n", ")\n", "\n", "# load documents\n", "documents = SimpleDirectoryReader(\"./data/paul_graham/\").load_data()\n", "\n", "# build index\n", "index = VectorStoreIndex.from_documents(\n", " documents=documents, embed_model=voyageai_embeddings\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Retrieve top 10 most relevant nodes, then filter with VoyageAI Rerank" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from llama_index.postprocessor.voyageai_rerank import VoyageAIRerank\n", "\n", "voyageai_rerank = VoyageAIRerank(\n", " api_key=api_key, top_k=2, model=\"rerank-2\", truncation=True\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "query_engine = index.as_query_engine(\n", " similarity_top_k=10,\n", " node_postprocessors=[voyageai_rerank],\n", ")\n", "response = query_engine.query(\n", " \"What did Sam Altman do in this essay?\",\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pprint_response(response, show_source=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Directly retrieve top 2 most similar nodes" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "query_engine = index.as_query_engine(\n", " similarity_top_k=2,\n", ")\n", "response = query_engine.query(\n", " \"What did Sam Altman do in this essay?\",\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Retrieved context is irrelevant and response is hallucinated." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pprint_response(response, show_source=True)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3" } }, "nbformat": 4, "nbformat_minor": 4 }