-
-
Save chuanqichen/bfce30f2644ba404af5af6158911b0a5 to your computer and use it in GitHub Desktop.
Updated for LlamaIndex v0.10+: Building a RAG pipeline using LlamaIndex, Google Gemini Pro, and Pinecone
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| from pinecone import Pinecone | |
| from llama_index.llms.gemini import Gemini | |
| from llama_index.vector_stores.pinecone import PineconeVectorStore | |
| from llama_index.embeddings.gemini import GeminiEmbedding | |
| from llama_index.core import StorageContext, VectorStoreIndex, download_loader | |
| from llama_index.core import Settings | |
| GOOGLE_API_KEY = "YOUR_API_KEY" | |
| PINECONE_API_KEY = "YOUR_API_KEY" | |
| os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEY | |
| os.environ["PINECONE_API_KEY"] = PINECONE_API_KEY | |
| DATA_URL = "https://www.gettingstarted.ai/how-to-use-gemini-pro-api-llamaindex-pinecone-index-to-build-rag-app/" | |
| # set llm as Gemini Pro | |
| llm = Gemini() | |
| embed_model = GeminiEmbedding(model_name="models/embedding-001") | |
| Settings.llm = llm | |
| Settings.embed_model = embed_model | |
| Settings.chunk_size = 512 | |
| # create pinecone client | |
| pinecone_client = Pinecone(api_key=os.environ["PINECONE_API_KEY"]) | |
| # list pinecone indexes | |
| for index in pinecone_client.list_indexes(): | |
| print(index['name']) | |
| # select pinecone index 'posts' | |
| pinecone_index = pinecone_client.Index("demo") | |
| # index_description = pinecone_client.describe_index("posts") | |
| # load page using llamaindex | |
| BeautifulSoupWebReader = download_loader("BeautifulSoupWebReader") | |
| loader = BeautifulSoupWebReader() | |
| documents = loader.load_data(urls=[DATA_URL]) | |
| # store embeddings in pinecone index | |
| vector_store = PineconeVectorStore(pinecone_index=pinecone_index) | |
| index = VectorStoreIndex.from_vector_store(vector_store=vector_store) | |
| storage_context = StorageContext.from_defaults( | |
| vector_store=vector_store | |
| ) | |
| # create Pinecone index programmatically | |
| # index = VectorStoreIndex.from_documents( | |
| # documents, | |
| # storage_context=storage_context | |
| # ) | |
| # query pinecone index for similar embeddings | |
| query_engine = index.as_query_engine() | |
| gemini_response = query_engine.query("What does the author think of LlamaIndex?") | |
| # print response | |
| print(gemini_response) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment