From f3d71f8819d5e6810d31086311f74f3677d82e4e Mon Sep 17 00:00:00 2001 From: James Braza Date: Sat, 20 Jan 2024 01:06:32 -0800 Subject: [PATCH] Modernized LlamaIndex integration (#1613) Updated LlamaIndex example --- examples/llamaindex/README.md | 27 ++++++++++++--------------- examples/llamaindex/main.py | 33 ++++++++++++--------------------- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/examples/llamaindex/README.md b/examples/llamaindex/README.md index c2b311e0..82925b58 100644 --- a/examples/llamaindex/README.md +++ b/examples/llamaindex/README.md @@ -1,25 +1,22 @@ # LocalAI Demonstration with Embeddings -This demonstration shows you how to use embeddings with existing data in LocalAI. We are using the `llama_index` library to facilitate the embedding and querying processes. The `Weaviate` client is used as the embedding source. - -## Prerequisites - -Before proceeding, make sure you have the following installed: -- Weaviate client -- LocalAI and its dependencies -- llama_index and its dependencies +This demonstration shows you how to use embeddings with existing data in LocalAI. +We are using the `llama-index` library to facilitate the embedding and querying processes. +The `Weaviate` client is used as the embedding source. ## Getting Started -1. Clone this repository: +1. Clone this repository and navigate to this directory -2. Navigate to the project directory: + ```bash + git clone git@github.com:mudler/LocalAI.git + cd LocalAI/examples/llamaindex + ``` -3. Run the example: +2. pip install LlamaIndex and Weviate's client: `pip install llama-index>=0.9.9 weviate-client` +3. Run the example: `python main.py` -`python main.py` - -``` +```none Downloading (…)lve/main/config.json: 100%|███████████████████████████| 684/684 [00:00<00:00, 6.01MB/s] Downloading model.safetensors: 100%|███████████████████████████████| 133M/133M [00:03<00:00, 39.5MB/s] Downloading (…)okenizer_config.json: 100%|███████████████████████████| 366/366 [00:00<00:00, 2.79MB/s] @@ -27,4 +24,4 @@ Downloading (…)solve/main/vocab.txt: 100%|████████████ Downloading (…)/main/tokenizer.json: 100%|█████████████████████████| 711k/711k [00:00<00:00, 18.8MB/s] Downloading (…)cial_tokens_map.json: 100%|███████████████████████████| 125/125 [00:00<00:00, 1.18MB/s] LocalAI is a community-driven project that aims to make AI accessible to everyone. It was created by Ettore Di Giacinto and is focused on providing various AI-related features such as text generation with GPTs, text to audio, audio to text, image generation, and more. The project is constantly growing and evolving, with a roadmap for future improvements. Anyone is welcome to contribute, provide feedback, and submit pull requests to help make LocalAI better. -``` \ No newline at end of file +``` diff --git a/examples/llamaindex/main.py b/examples/llamaindex/main.py index a0c004ad..89d86abd 100644 --- a/examples/llamaindex/main.py +++ b/examples/llamaindex/main.py @@ -1,38 +1,29 @@ -import os - import weaviate - -from llama_index import ServiceContext, VectorStoreIndex, StorageContext -from llama_index.llms import LocalAI +from llama_index import ServiceContext, VectorStoreIndex +from llama_index.llms import LOCALAI_DEFAULTS, OpenAILike from llama_index.vector_stores import WeaviateVectorStore -from llama_index.storage.storage_context import StorageContext - -# Weaviate client setup -client = weaviate.Client("http://weviate.default") # Weaviate vector store setup -vector_store = WeaviateVectorStore(weaviate_client=client, index_name="AIChroma") +vector_store = WeaviateVectorStore( + weaviate_client=weaviate.Client("http://weviate.default"), index_name="AIChroma" +) -# Storage context setup -storage_context = StorageContext.from_defaults(vector_store=vector_store) - -# LocalAI setup -llm = LocalAI(temperature=0, model_name="gpt-3.5-turbo", api_base="http://local-ai.default", api_key="stub") -llm.globally_use_chat_completions = True; +# LLM setup, served via LocalAI +llm = OpenAILike(temperature=0, model="gpt-3.5-turbo", **LOCALAI_DEFAULTS) # Service context setup service_context = ServiceContext.from_defaults(llm=llm, embed_model="local") # Load index from stored vectors index = VectorStoreIndex.from_vector_store( - vector_store, - storage_context=storage_context, - service_context=service_context + vector_store, service_context=service_context ) # Query engine setup -query_engine = index.as_query_engine(similarity_top_k=1, vector_store_query_mode="hybrid") +query_engine = index.as_query_engine( + similarity_top_k=1, vector_store_query_mode="hybrid" +) # Query example response = query_engine.query("What is LocalAI?") -print(response) \ No newline at end of file +print(response)