LlamaIndex ialah rangka kerja untuk membina aplikasi AI generatif ditambah konteks dengan LLM.
Pembesaran konteks merujuk kepada teknik di mana maklumat atau konteks tambahan yang berkaitan diberikan kepada model LLM, meningkatkan pemahaman dan responsnya kepada pertanyaan yang diberikan. Pembesaran ini biasanya melibatkan mendapatkan semula, menyepadukan atau melampirkan sumber data luaran seperti dokumen, benam, pada input model. Matlamatnya adalah untuk menjadikan model lebih bermaklumat dengan menyediakannya dengan konteks yang diperlukan yang membantunya memberikan jawapan yang lebih baik, lebih tepat dan bernuansa. Retrieval augmented generation(RAG) ialah contoh pembesaran konteks yang paling popular.
Ejen ialah enjin penaakulan dan keputusan automatik yang dikuasakan oleh LLM yang menggunakan alatan untuk melaksanakan penyelidikan, pengekstrakan data, carian web dan banyak lagi tugas. Ia boleh digunakan untuk kes penggunaan mudah seperti menjawab soalan berdasarkan data untuk dapat membuat keputusan dan mengambil tindakan untuk menyelesaikan tugasan.
Dalam siaran ini, kami akan membina ejen RAG mudah menggunakan LlamaIndex.
Kami akan menggunakan Python untuk membina ejen RAG mudah menggunakan LlamaIndex. Mari kita pasang kebergantungan yang diperlukan dahulu seperti di bawah:
pip install llama-index python-dotenv
Kami akan menggunakan gpt-4o-mini OpenAI sebagai LLM. Anda perlu meletakkan kunci API dalam fail pembolehubah persekitaran. Anda boleh membaca lebih lanjut tentang menyediakan LLM tempatan menggunakan LLamaIndex di sini.
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings from llama_index.llms.openai import OpenAI from dotenv import load_dotenv # Load environment variables (e.g., OPENAI_API_KEY) load_dotenv() # Configure OpenAI model Settings.llm = OpenAI(model="gpt-4o-mini") # Load documents from the local directory documents = SimpleDirectoryReader("./data").load_data() # Create an index from documents for querying index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine()
Sekarang, mari kita tentukan beberapa fungsi asas yang boleh digunakan ejen untuk melaksanakan tugas.
def multiply(a: float, b: float) -> float: """Multiply two numbers and returns the product""" return a * b def add(a: float, b: float) -> float: """Add two numbers and returns the sum""" return a + b
Seterusnya, kami akan mencipta alatan daripada fungsi dan enjin pertanyaan yang kami takrifkan sebelum ini, yang akan digunakan oleh ejen untuk melaksanakan tugas. Alat ini bertindak sebagai utiliti yang boleh dimanfaatkan oleh ejen apabila mengendalikan pelbagai jenis pertanyaan.
from llama_index.core.tools import FunctionTool, QueryEngineTool # Wrap functions as tools add_tool = FunctionTool.from_defaults(fn=add) multiply_tool = FunctionTool.from_defaults(fn=multiply) # Create a query engine tool for document retrieval space_facts_tool = QueryEngineTool.from_defaults( query_engine, name="space_facts_tool", description="A RAG engine with information about fun space facts." )
Kami kini akan mencipta ejen menggunakan ReActAgent. Ejen akan bertanggungjawab untuk menentukan masa untuk menggunakan alatan dan cara menjawab pertanyaan.
from llama_index.core.agent import ReActAgent # Create the agent with the tools agent = ReActAgent.from_tools( [multiply_tool, add_tool, space_facts_tool], verbose=True )
Ejen ini menggunakan rangka kerja ReAct, yang membolehkan model menaakul dan bertindak dengan menggunakan alatan yang diberikan dalam urutan logik. Ejen dimulakan dengan alatan yang kami cipta, dan verbose=True flag akan mengeluarkan maklumat terperinci tentang cara ejen membuat alasan dan melaksanakan tugas.
Akhir sekali, mari jalankan ejen dalam gelung interaktif di mana ia memproses pertanyaan pengguna sehingga kami keluar.
while True: query = input("Query: ") if query == "/bye": exit() response = agent.chat(query) print(response) print("-" * 10)
Atas ialah kandungan terperinci Membina ejen RAG mudah dengan LlamaIndex. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!