GetNotes Tools
run-llama/llama_index
Tool นี้คืออะไร
LlamaIndex เป็นเฟรมเวิร์กโอเพนซอร์สสำหรับนักพัฒนาที่ต้องการสร้างแอปพลิเคชัน LLM โดยช่วยเชื่อมต่อ จัดโครงสร้าง และเรียกค้นข้อมูลส่วนตัวเพื่อเสริมความสามารถของ LLM ได้อย่างมีประสิทธิภาพ
ข้อมูลโปรเจกต์
ดาว
50.9K
Forks
7.8K
License
MIT
อัปเดต GitHub ล่าสุด
13 ก.ค. 2569
เพิ่มใน GetNotes
15 ก.ค. 2569
Repository
run-llama/llama_index
รูปแบบ
เหมาะกับงาน
เหมาะกับอาชีพ
Ecosystem
Python
แปลและเรียบเรียงโดย AI
เนื้อหาฉบับภาษาไทย
ใช้อ่านเพื่อทำความเข้าใจเบื้องต้น โปรดตรวจสอบรายละเอียดสำคัญกับเอกสารต้นฉบับด้านล่าง
🗂️ LlamaIndex 🦙

LlamaIndex OSS (โดย LlamaIndex) เป็นเฟรมเวิร์กโอเพนซอร์สสำหรับสร้างแอปพลิเคชันแบบ agentic Parse คือแพลตฟอร์มระดับองค์กรของเราสำหรับ agentic OCR, การแยกวิเคราะห์, การดึงข้อมูล, การทำดัชนี และอื่นๆ คุณสามารถใช้ LlamaParse กับเฟรมเวิร์กนี้หรือใช้แยกต่างหากได้ ดู LlamaParse ด้านล่างสำหรับลิงก์การลงทะเบียนและผลิตภัณฑ์
📚 เอกสารประกอบ:
การสร้างด้วย LlamaIndex โดยทั่วไปจะเกี่ยวข้องกับการทำงานกับ LlamaIndex core และชุดของการผสานรวม (หรือปลั๊กอิน) ที่เลือก มีสองวิธีในการเริ่มต้นสร้างด้วย LlamaIndex ใน Python:
- 1Starter:
llama-indexเป็นแพ็กเกจ Python เริ่มต้นที่รวม LlamaIndex core และการผสานรวมที่เลือกไว้ - 2Customized:
llama-index-coreติดตั้ง LlamaIndex core และเพิ่มแพ็กเกจการผสานรวม LlamaIndex ที่คุณเลือกบน LlamaHub ที่จำเป็นสำหรับแอปพลิเคชันของคุณ มีแพ็กเกจการผสานรวม LlamaIndex มากกว่า 300 รายการที่ทำงานร่วมกับ core ได้อย่างราบรื่น ช่วยให้คุณสามารถสร้างด้วย LLM, embedding และ vector store providers ที่คุณต้องการ
ไลบรารี LlamaIndex Python มีการจัดชื่อ (namespaced) โดยที่คำสั่ง import ที่มี core หมายความว่ากำลังใช้แพ็กเกจ core ในทางตรงกันข้าม คำสั่งที่ไม่มี core หมายความว่ากำลังใช้แพ็กเกจการผสานรวม
# typical pattern
from llama_index.core.xxx import ClassABC # core submodule xxx
from llama_index.xxx.yyy import (
SubclassABC,
) # integration yyy for submodule xxx
# concrete example
from llama_index.core.llms import LLM
from llama_index.llms.openai import OpenAILlamaParse (แพลตฟอร์ม document agent)
LlamaParse เป็นแพลตฟอร์มของตัวเอง — มุ่งเน้นไปที่ document agents และ agentic OCR ประกอบด้วย Parse (การแยกวิเคราะห์), LlamaAgents (document agents ที่ปรับใช้), Extract (การดึงข้อมูลที่มีโครงสร้าง) และ Index (การนำเข้าและ RAG) คุณสามารถใช้ร่วมกับเฟรมเวิร์ก LlamaIndex หรือใช้แยกต่างหากได้
- ลงทะเบียนสำหรับ LlamaParse — สร้างบัญชีและรับ API key ของคุณ
- Parse — Agentic OCR และการแยกวิเคราะห์เอกสาร (130+ รูปแบบ) เอกสารประกอบ
- Extract — การดึงข้อมูลที่มีโครงสร้างจากเอกสาร เอกสารประกอบ
- Index — การนำเข้า, การทำดัชนี และ RAG pipelines เอกสารประกอบ
- Split — แยกเอกสารขนาดใหญ่เป็นหมวดหมู่ย่อย เอกสารประกอบ
- Agents — สร้าง document agents แบบ end-to-end ด้วย
Workflowsและ Agent Builder เอกสารประกอบ
ลิงก์สำคัญ
🚀 ภาพรวม
หมายเหตุ: README นี้ไม่ได้อัปเดตบ่อยเท่าเอกสารประกอบ โปรดตรวจสอบเอกสารประกอบด้านบนสำหรับการอัปเดตล่าสุด!
บริบท
- LLMs เป็นเทคโนโลยีที่ยอดเยี่ยมสำหรับการสร้างความรู้และการให้เหตุผล พวกมันได้รับการฝึกฝนล่วงหน้าด้วยข้อมูลสาธารณะจำนวนมาก
- เราจะเสริม LLMs ด้วยข้อมูลส่วนตัวของเราได้อย่างไรให้ดีที่สุด?
เราต้องการชุดเครื่องมือที่ครอบคลุมเพื่อช่วยในการเสริมข้อมูลสำหรับ LLMs
แนวทางแก้ไขที่เสนอ
นั่นคือที่มาของ LlamaIndex LlamaIndex เป็น "เฟรมเวิร์กข้อมูล" ที่ช่วยให้คุณสร้างแอป LLM ได้ โดยมีเครื่องมือดังต่อไปนี้:
- นำเสนอ ตัวเชื่อมต่อข้อมูล เพื่อนำเข้าแหล่งข้อมูลและรูปแบบข้อมูลที่มีอยู่ของคุณ (APIs, PDFs, docs, SQL, ฯลฯ)
- จัดหาวิธีการ จัดโครงสร้างข้อมูลของคุณ (indices, graphs) เพื่อให้ข้อมูลนี้สามารถใช้กับ LLMs ได้อย่างง่ายดาย
- จัดหา อินเทอร์เฟซการเรียกค้น/การสอบถามขั้นสูงสำหรับข้อมูลของคุณ: ป้อน LLM input prompt ใดๆ ก็ตาม และรับบริบทที่เรียกค้นและผลลัพธ์ที่เสริมด้วยความรู้กลับมา
- ช่วยให้การผสานรวมกับเฟรมเวิร์กแอปพลิเคชันภายนอกของคุณเป็นเรื่องง่าย (เช่น กับ LangChain, Flask, Docker, ChatGPT หรืออื่นๆ)
LlamaIndex มีเครื่องมือสำหรับทั้งผู้ใช้เริ่มต้นและผู้ใช้ขั้นสูง API ระดับสูงของเราช่วยให้ผู้ใช้เริ่มต้นสามารถใช้ LlamaIndex เพื่อนำเข้าและสอบถามข้อมูลของตนได้ในโค้ดเพียง 5 บรรทัด API ระดับต่ำของเราช่วยให้ผู้ใช้ขั้นสูงสามารถปรับแต่งและขยายโมดูลใดก็ได้ (ตัวเชื่อมต่อข้อมูล, ดัชนี, ตัวดึงข้อมูล, เอ็นจิ้นการสอบถาม, โมดูลการจัดอันดับใหม่) เพื่อให้เหมาะกับความต้องการของตน
💡 การมีส่วนร่วม
สนใจที่จะมีส่วนร่วมหรือไม่? การมีส่วนร่วมใน LlamaIndex core รวมถึงการมีส่วนร่วมในการผสานรวมที่สร้างขึ้นบน core นั้นได้รับการยอมรับและสนับสนุนอย่างยิ่ง! ดู คู่มือการมีส่วนร่วม ของเราสำหรับรายละเอียดเพิ่มเติม
การผสานรวมใหม่ควรผสานรวมอย่างมีความหมายกับส่วนประกอบเฟรมเวิร์ก LlamaIndex ที่มีอยู่ ผู้ดูแล LlamaIndex อาจปฏิเสธการผสานรวมบางอย่างตามดุลยพินิจ
📄 เอกสารประกอบ
เอกสารประกอบฉบับเต็มสามารถดูได้ ที่นี่
โปรดตรวจสอบเพื่อดูบทช่วยสอน, คู่มือวิธีใช้, ข้อมูลอ้างอิง และแหล่งข้อมูลอื่น ๆ ที่เป็นปัจจุบันที่สุด!
💻 ตัวอย่างการใช้งาน
# custom selection of integrations to work with core
pip install llama-index-core
pip install llama-index-llms-openai
pip install llama-index-llms-ollama
pip install llama-index-embeddings-huggingfaceตัวอย่างอยู่ในโฟลเดอร์ docs/examples ดัชนีอยู่ในโฟลเดอร์ indices (ดูรายการดัชนีด้านล่าง)
ในการสร้างดัชนี vector store อย่างง่ายโดยใช้ OpenAI:
import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(documents)ในการสร้างดัชนี vector store อย่างง่ายโดยใช้ LLM ที่ไม่ใช่ OpenAI เช่น LLM ที่โฮสต์ผ่าน Ollama:
from llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.ollama import Ollama
from transformers import AutoTokenizer
# set the LLM
Settings.llm = Ollama(
model="llama-3.1:latest",
request_timeout=360.0,
)
# set tokenizer to match LLM
Settings.tokenizer = AutoTokenizer.from_pretrained(
"meta-llama/Llama-3.1-8B-Instruct"
)
# set the embed model
Settings.embed_model = HuggingFaceEmbedding(
model_name="BAAI/bge-small-en-v1.5"
)
documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(
documents,
)ในการสอบถาม:
query_engine = index.as_query_engine()
query_engine.query("YOUR_QUESTION")โดยค่าเริ่มต้น ข้อมูลจะถูกเก็บไว้ในหน่วยความจำ
ในการบันทึกลงดิสก์ (ภายใต้ ./storage):
index.storage_context.persist()ในการโหลดซ้ำจากดิสก์:
from llama_index.core import StorageContext, load_index_from_storage
# rebuild storage context
storage_context = StorageContext.from_defaults(persist_dir="./storage")
# load index
index = load_index_from_storage(storage_context)หมายเหตุเกี่ยวกับการยืนยัน Build Assets
โดยค่าเริ่มต้น llama-index-core มีโฟลเดอร์ _static ที่มีแคชของ nltk และ tiktoken ซึ่งรวมอยู่ในการติดตั้งแพ็กเกจ สิ่งนี้ช่วยให้คุณสามารถรัน llama-index ในสภาพแวดล้อมที่มีข้อจำกัดในการเข้าถึงดิสก์ในขณะรันไทม์ได้อย่างง่ายดาย
เพื่อยืนยันว่าไฟล์เหล่านี้ปลอดภัยและถูกต้อง เราใช้ GitHub action attest-build-provenance การดำเนินการนี้จะยืนยันว่าไฟล์ในโฟลเดอร์ _static เหมือนกับไฟล์ในโฟลเดอร์ llama-index-core/llama_index/core/_static
ในการยืนยันสิ่งนี้ คุณสามารถรันสคริปต์ต่อไปนี้ (ชี้ไปยังแพ็กเกจที่คุณติดตั้ง):
#!/bin/bash
STATIC_DIR="venv/lib/python3.13/site-packages/llama_index/core/_static"
REPO="run-llama/llama_index"
find "$STATIC_DIR" -type f | while read -r file; do
echo "Verifying: $file"
gh attestation verify "$file" -R "$REPO" || echo "Failed to verify: $file"
done📖 การอ้างอิง
อ้างอิงเพื่อใช้หากคุณใช้ LlamaIndex ในบทความ:
@software{Liu_LlamaIndex_2022,
author = {Liu, Jerry},
doi = {10.5281/zenodo.1234},
month = {11},
title = {{LlamaIndex}},
url = {https://github.com/jerryjliu/llama_index},
year = {2022}
}เอกสารโปรเจกต์
อ่านเอกสารต้นฉบับ
README วิธีติดตั้ง วิธีใช้งาน และข้อกำหนดจาก repository ต้นฉบับ
🗂️ LlamaIndex 🦙
LlamaIndex OSS (by LlamaIndex) is an open-source framework to build agentic applications. Parse is our enterprise platform for agentic OCR, parsing, extraction, indexing and more. You can use LlamaParse with this framework or on its own; see LlamaParse below for signup and product links.
📚 Documentation:
Building with LlamaIndex typically involves working with LlamaIndex core and a chosen set of integrations (or plugins). There are two ways to start building with LlamaIndex in Python:
- 1**Starter**: [`llama-index`](https://pypi.org/project/llama-index/). A starter Python package that includes core LlamaIndex as well as a selection of integrations.
- 2**Customized**: [`llama-index-core`](https://pypi.org/project/llama-index-core/). Install core LlamaIndex and add your chosen LlamaIndex integration packages on [LlamaHub](https://llamahub.ai/) that are required for your application. There are over 300 LlamaIndex integration packages that work seamlessly with core, allowing you to build with your preferred LLM, embedding, and vector store providers.
The LlamaIndex Python library is namespaced such that import statements which
include core imply that the core package is being used. In contrast, those
statements without core imply that an integration package is being used.
# typical pattern
from llama_index.core.xxx import ClassABC # core submodule xxx
from llama_index.xxx.yyy import (
SubclassABC,
) # integration yyy for submodule xxx
# concrete example
from llama_index.core.llms import LLM
from llama_index.llms.openai import OpenAILlamaParse (document agent platform)
LlamaParse is its own platform—focused on document agents and agentic OCR. It includes Parse (parsing), LlamaAgents (deployed document agents), Extract (structured extraction), and Index (ingest and RAG). You can use it with the LlamaIndex framework or standalone.
- Sign up for LlamaParse — Create an account and get your API key.
- Parse — Agentic OCR and document parsing (130+ formats). Docs
- Extract — Structured data extraction from documents. Docs
- Index — Ingest, index, and RAG pipelines. Docs
- Split — Split large documents into subcategories. Docs
- Agents — Build end-to-end document agents with
Workflowsand Agent Builder. Docs
Important Links
🚀 Overview
NOTE: This README is not updated as frequently as the documentation. Please check out the documentation above for the latest updates!
Context
- LLMs are a phenomenal piece of technology for knowledge generation and reasoning. They are pre-trained on large amounts of publicly available data.
- How do we best augment LLMs with our own private data?
We need a comprehensive toolkit to help perform this data augmentation for LLMs.
Proposed Solution
That's where LlamaIndex comes in. LlamaIndex is a "data framework" to help you build LLM apps. It provides the following tools:
- Offers data connectors to ingest your existing data sources and data formats (APIs, PDFs, docs, SQL, etc.).
- Provides ways to structure your data (indices, graphs) so that this data can be easily used with LLMs.
- Provides an advanced retrieval/query interface over your data: Feed in any LLM input prompt, get back retrieved context and knowledge-augmented output.
- Allows easy integrations with your outer application framework (e.g. with LangChain, Flask, Docker, ChatGPT, or anything else).
LlamaIndex provides tools for both beginner users and advanced users. Our high-level API allows beginner users to use LlamaIndex to ingest and query their data in 5 lines of code. Our lower-level APIs allow advanced users to customize and extend any module (data connectors, indices, retrievers, query engines, reranking modules), to fit their needs.
💡 Contributing
Interested in contributing? Contributions to LlamaIndex core as well as contributing integrations that build on the core are both accepted and highly encouraged! See our Contribution Guide for more details.
New integrations should meaningfully integrate with existing LlamaIndex framework components. At the discretion of LlamaIndex maintainers, some integrations may be declined.
📄 Documentation
Full documentation can be found here
Please check it out for the most up-to-date tutorials, how-to guides, references, and other resources!
💻 Example Usage
# custom selection of integrations to work with core
pip install llama-index-core
pip install llama-index-llms-openai
pip install llama-index-llms-ollama
pip install llama-index-embeddings-huggingfaceExamples are in the docs/examples folder. Indices are in the indices folder (see list of indices below).
To build a simple vector store index using OpenAI:
import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(documents)To build a simple vector store index using non-OpenAI LLMs, e.g. LLMs hosted through Ollama:
from llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.ollama import Ollama
from transformers import AutoTokenizer
# set the LLM
Settings.llm = Ollama(
model="llama-3.1:latest",
request_timeout=360.0,
)
# set tokenizer to match LLM
Settings.tokenizer = AutoTokenizer.from_pretrained(
"meta-llama/Llama-3.1-8B-Instruct"
)
# set the embed model
Settings.embed_model = HuggingFaceEmbedding(
model_name="BAAI/bge-small-en-v1.5"
)
documents = SimpleDirectoryReader("YOUR_DATA_DIRECTORY").load_data()
index = VectorStoreIndex.from_documents(
documents,
)To query:
query_engine = index.as_query_engine()
query_engine.query("YOUR_QUESTION")By default, data is stored in-memory.
To persist to disk (under ./storage):
index.storage_context.persist()To reload from disk:
from llama_index.core import StorageContext, load_index_from_storage
# rebuild storage context
storage_context = StorageContext.from_defaults(persist_dir="./storage")
# load index
index = load_index_from_storage(storage_context)A note on Verification of Build Assets
By default, llama-index-core includes a _static folder that contains the nltk and tiktoken cache that is included with the package installation. This ensures that you can easily run llama-index in environments with restrictive disk access permissions at runtime.
To verify that these files are safe and valid, we use the github attest-build-provenance action. This action will verify that the files in the _static folder are the same as the files in the llama-index-core/llama_index/core/_static folder.
To verify this, you can run the following script (pointing to your installed package):
#!/bin/bash
STATIC_DIR="venv/lib/python3.13/site-packages/llama_index/core/_static"
REPO="run-llama/llama_index"
find "$STATIC_DIR" -type f | while read -r file; do
echo "Verifying: $file"
gh attestation verify "$file" -R "$REPO" || echo "Failed to verify: $file"
done📖 Citation
Reference to cite if you use LlamaIndex in a paper:
@software{Liu_LlamaIndex_2022,
author = {Liu, Jerry},
doi = {10.5281/zenodo.1234},
month = {11},
title = {{LlamaIndex}},
url = {https://github.com/jerryjliu/llama_index},
year = {2022}
}