The same pipeline — load, chunk, embed, retrieve, generate — in three frameworks. Click each to see the full code and what it costs you.
from synapsekit import RAG
rag = RAG(model="llama-3.1-8b-instant", api_key=API_KEY, provider="groq") rag.add(DOCUMENT) answer = rag.ask_sync(QUERY)
# Before rag = RAG(model="gpt-4o-mini", api_key=KEY, provider="openai") # After — 1 line changed, no new packages rag = RAG(model="llama-3.1-8b-instant", api_key=KEY, provider="groq")
from llama_index.core import VectorStoreIndex, Document, Settings from llama_index.llms.openai import OpenAI from llama_index.embeddings.openai import OpenAIEmbedding
Settings.llm = OpenAI(model="gpt-4o-mini", api_key=API_KEY) Settings.embed_model = OpenAIEmbedding(api_key=API_KEY) index = VectorStoreIndex.from_documents([Document(text=DOCUMENT)]) engine = index.as_query_engine(similarity_top_k=5) answer = engine.query(QUERY) print(answer)
# Before Settings.llm = OpenAI(model="gpt-4o-mini", api_key=OPENAI_KEY) # After — 3 lines changed # pip install llama-index-llms-groq from llama_index.llms.groq import Groq Settings.llm = Groq(model="llama-3.1-8b-instant", api_key=GROQ_KEY)
from langchain_core.documents import Document from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.vectorstores import FAISS from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain.chains import RetrievalQA
docs = [Document(page_content=DOCUMENT)]
chunks = RecursiveCharacterTextSplitter(
chunk_size=500, chunk_overlap=50
).split_documents(docs)
vs = FAISS.from_documents(chunks, OpenAIEmbeddings(api_key=API_KEY))
chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o-mini", api_key=API_KEY),
retriever=vs.as_retriever(search_kwargs={"k": 5})
)
answer = chain.invoke({"query": QUERY})
print(answer["result"])
# Before ChatOpenAI(model="gpt-4o-mini", api_key=OPENAI_KEY) # After — 3 lines changed # pip install langchain-groq from langchain_groq import ChatGroq ChatGroq(model="llama-3.1-8b-instant", api_key=GROQ_KEY)