Skip to content

Instantly share code, notes, and snippets.

@chuanqichen
Forked from gswithjeff/main.py
Created July 1, 2024 21:33
Show Gist options
  • Select an option

  • Save chuanqichen/bfce30f2644ba404af5af6158911b0a5 to your computer and use it in GitHub Desktop.

Select an option

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
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