Welcome to the LlamaIndex
RAG-a-thon!
2024-10-11 LlamaIndex hackathon
Topics
- What is LlamaIndex?
- What can it help me do?
- Tips for winning this hackathon
- Example project ideas
- All the resources you need
What is LlamaIndex?
Python: docs.llamaindex.ai
TypeScript: ts.llamaindex.ai
LlamaHub
- Data loaders
- Embedding models
- Vector stores
- LLMs
- Agent tools
- Pre-built strategies
- More!
LlamaParse
Free for 1000 pages/day!
LlamaCloud
2. Get on the waitlist!
1. Sign up:
3. Email info@llamaindex.ai
with the email address you used to sign up
Why LlamaIndex?
- Build faster
- Skip the boilerplate
- Avoid early pitfalls
- Get best practices for free
- Go from prototype to production
What can LlamaIndex
do for me?
RAG
What can LlamaIndex do: #1
RAG with LlamaCloud
from llama_index.indices.managed.llama_cloud import LlamaCloudIndex
# pip install llama-index-indices-managed-llama-cloud
index = LlamaCloudIndex(
name="My Index",
project_name="My Project",
organization_id="e793a802-cb91-4e6a-bd49-61d0ba2ac5f9",
api_key="llx-..."
)
# retrieve nodes
nodes = index.as_retriever().retrieve(query)
# or use as a query engine
response = index.as_query_engine().query(query)
5 line starter
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
print(response)
Using LlamaParse directly:
RAG is necessary
but not sufficient
Agents
What can LlamaIndex do: #2
Query engine as a tool
# set up list of tools
tools = [
QueryEngineTool(
query_engine=vector_query_engine,
metadata=ToolMetadata(
# this is how the LLM knows what the tool does
name="pg_essay",
description="Paul Graham essay on What I Worked On",
),
),
# more query engines or other tools go here
]
Arbitrary code as a tool
# define sample Tool
def multiply(a: int, b: int) -> int:
"""Multiply two integers and returns the result integer"""
return a * b
multiply_tool = FunctionTool.from_defaults(fn=multiply)
# initialize ReAct agent
agent = ReActAgent.from_tools(
[
multiply_tool
# other tools here
],
verbose=True
)
Tools from LlamaHub
from llama_index.tools.duckduckgo import DuckDuckGoSearchToolSpec
tool_spec = DuckDuckGoSearchToolSpec()
# initialize ReAct agent
# with a list of tools from the spec
agent = ReActAgent.from_tools(
DuckDuckGoSearchToolSpec.to_tool_list(),
verbose=True
)
Agents in LlamaIndex
Agent built-ins
# ReAct agent
agent = ReActAgent.from_tools(
[multiply_tool],
verbose=True
)
# OR structured planner agent
worker = FunctionCallingAgentWorker.from_tools(
[lyft_tool, uber_tool], verbose=True
)
agent = StructuredPlannerAgent(
worker, tools=[lyft_tool, uber_tool], verbose=True
)
# OR language agent tree search
worker = LATSAgentWorker.from_tools(
query_engine_tools,
llm=llm,
num_expansions=2,
max_rollouts=3,
verbose=True,
)
agent = worker.as_agent()
Workflows
What can LlamaIndex do: #3
Basic workflow
from llama_index.llms.openai import OpenAI
class OpenAIGenerator(Workflow):
@step()
async def generate(self, ev: StartEvent) -> StopEvent:
query = ev.get("query")
llm = OpenAI()
response = await llm.acomplete(query)
return StopEvent(result=str(response))
w = OpenAIGenerator(timeout=10, verbose=False)
result = await w.run(query="What's LlamaIndex?")
print(result)
Visualization
draw_all_possible_flows()
Deploy
What can LlamaIndex do: #4
What LlamaIndex doesn't do
It's not a front-end library!
npx create-llama
More front-end options
- Reflex.dev - they're here, talk to them!
- Streamlit
- Gradio
What we're
looking for
Use LlamaIndex
Tips for winning #1
LlamaCloud
not required
Tips for winning #2
Agentic strategies
Tips for winning #3
Workflows will help
Tips for winning #4
More than a chatbot
Tips for winning #5
Use custom models
Tips for winning #6
Go multi-modal
Tips for winning #7
Example projects
Human in the loop demo
Full stack python app
App creator using O1
Multi-agent concierge
PowerPoint generator
Newsletter generator
File organizer
Gmail regex writer
Realtime audio with OpenAI
Resources
- All of these slides
- Getting started guide
- Tutorials
- Documentation
- Example projects
- LlamaIndex Discord
Welcome to the LlamaIndex hackathon
By seldo
Welcome to the LlamaIndex hackathon
- 171