Trí tuệ nhân tạo
LlamaIndex: Dễ dàng tăng cường ứng dụng LLM của bạn bằng dữ liệu tùy chỉnh

Các mô hình ngôn ngữ lớn (LLM) như dòng GPT của OpenAI đã được đào tạo trên nhiều loại dữ liệu công khai, thể hiện khả năng đáng chú ý trong việc tạo văn bản, tóm tắt, trả lời câu hỏi và lập kế hoạch. Mặc dù có tính linh hoạt cao, một câu hỏi thường gặp xoay quanh việc tích hợp liền mạch các mô hình này với dữ liệu tùy chỉnh, riêng tư hoặc độc quyền.
Các doanh nghiệp và cá nhân tràn ngập dữ liệu tùy chỉnh và duy nhất, thường được lưu trữ trong nhiều ứng dụng khác nhau như Notion, Slack và Salesforce hoặc được lưu trữ trong các tệp cá nhân. Để tận dụng LLM cho dữ liệu cụ thể này, một số phương pháp đã được đề xuất và thử nghiệm.
Tinh chỉnh Là một trong những phương pháp như vậy, nó bao gồm việc điều chỉnh trọng số của mô hình để kết hợp kiến thức từ các tập dữ liệu cụ thể. Tuy nhiên, quá trình này không phải là không có thách thức. Nó đòi hỏi nỗ lực đáng kể trong việc chuẩn bị dữ liệu, cùng với một quy trình tối ưu hóa khó khăn, đòi hỏi một trình độ chuyên môn nhất định về học máy. Hơn nữa, những tác động về mặt tài chính có thể rất đáng kể, đặc biệt là khi xử lý các tập dữ liệu lớn.
Học tập trong ngữ cảnh đã nổi lên như một giải pháp thay thế, ưu tiên tạo ra các đầu vào và lời nhắc để cung cấp cho LLM bối cảnh cần thiết để tạo ra đầu ra chính xác. Cách tiếp cận này giảm thiểu nhu cầu đào tạo lại mô hình trên diện rộng, cung cấp phương tiện tích hợp dữ liệu riêng tư hiệu quả và dễ tiếp cận hơn.
Nhưng nhược điểm của việc này là nó phụ thuộc vào kỹ năng và kiến thức chuyên môn của người dùng trong kỹ thuật nhanh chóngNgoài ra, học theo ngữ cảnh không phải lúc nào cũng chính xác hoặc đáng tin cậy như tinh chỉnh, đặc biệt là khi xử lý dữ liệu chuyên môn hoặc kỹ thuật cao. Việc huấn luyện trước mô hình trên một phạm vi rộng các văn bản internet không đảm bảo việc hiểu được thuật ngữ chuyên ngành hoặc ngữ cảnh cụ thể, điều này có thể dẫn đến kết quả đầu ra không chính xác hoặc không liên quan. Điều này đặc biệt có vấn đề khi dữ liệu riêng tư đến từ một lĩnh vực hoặc ngành cụ thể.
Hơn nữa, số lượng ngữ cảnh có thể được cung cấp trong một lời nhắc duy nhất bị hạn chế và hiệu suất của LLM có thể giảm sút khi độ phức tạp của tác vụ tăng lên. Ngoài ra còn có thách thức về quyền riêng tư và bảo mật dữ liệu vì thông tin được cung cấp trong lời nhắc có thể nhạy cảm hoặc bí mật.
Khi cộng đồng khám phá những kỹ thuật này, các công cụ như Llama Index hiện đang được chú ý.
Nó được bắt đầu bởi Jerry Lưu, một cựu nhà khoa học nghiên cứu của Uber. Khi thử nghiệm GPT-3 vào mùa thu năm ngoái, Liu nhận thấy mô hình này có những hạn chế trong việc xử lý dữ liệu riêng tư, chẳng hạn như tệp cá nhân. Quan sát này đã dẫn đến sự ra đời của dự án nguồn mở LlamaIndex.
Sáng kiến này đã thu hút các nhà đầu tư, đảm bảo $ 8.5 triệu trong vòng tài trợ hạt giống gần đây.
LlamaIndex tạo điều kiện thuận lợi cho việc tăng cường LLM bằng dữ liệu tùy chỉnh, thu hẹp khoảng cách giữa các mô hình được đào tạo trước và các trường hợp sử dụng dữ liệu tùy chỉnh. Thông qua LlamaIndex, người dùng có thể tận dụng dữ liệu của riêng họ bằng LLM, mở khóa việc tạo ra kiến thức và lý luận bằng những hiểu biết được cá nhân hóa.
Người dùng có thể cung cấp liền mạch LLM dữ liệu của riêng họ, thúc đẩy một môi trường nơi việc tạo ra kiến thức và lý luận được cá nhân hóa sâu sắc và sâu sắc. LlamaIndex giải quyết các hạn chế của việc học trong ngữ cảnh bằng cách cung cấp nền tảng tương tác dữ liệu thân thiện và an toàn hơn, đảm bảo rằng ngay cả những người có chuyên môn về học máy hạn chế cũng có thể tận dụng toàn bộ tiềm năng của LLM bằng dữ liệu riêng tư của họ.
Khái niệm cấp cao và một số hiểu biết sâu sắc
1. Truy xuất thế hệ tăng cường (RAG):
RAG là một quy trình hai chiều được thiết kế để kết hợp LLM với dữ liệu tùy chỉnh, qua đó nâng cao khả năng của mô hình trong việc đưa ra phản hồi chính xác và sáng suốt hơn. Quy trình này bao gồm:
- Giai đoạn lập chỉ mục: Đây là giai đoạn chuẩn bị, nơi đặt nền tảng cho việc tạo ra cơ sở tri thức.
- Giai đoạn truy vấn: Tại đây, cơ sở kiến thức được tìm kiếm theo ngữ cảnh có liên quan để hỗ trợ LLM trả lời các truy vấn.
Hành trình lập chỉ mục với LlamaIndex:
- Kết nối dữ liệu: Hãy coi các trình kết nối dữ liệu như hộ chiếu dữ liệu của bạn đến LlamaIndex. Chúng giúp nhập dữ liệu từ nhiều nguồn và định dạng khác nhau, đóng gói chúng thành một biểu diễn 'Tài liệu' đơn giản. Bạn có thể tìm thấy các trình kết nối dữ liệu trong LlamaHub, một kho lưu trữ mã nguồn mở chứa đầy các trình tải dữ liệu. Các trình tải này được thiết kế để dễ dàng tích hợp, cho phép trải nghiệm cắm và chạy với bất kỳ ứng dụng LlamaIndex nào.
- Tài liệu / Nút: Tài liệu giống như một chiếc vali chung có thể chứa nhiều loại dữ liệu khác nhau—có thể là PDF, đầu ra API hoặc mục cơ sở dữ liệu. Mặt khác, Nút là một đoạn mã hoặc “đoạn” từ Tài liệu, được bổ sung thêm siêu dữ liệu và mối quan hệ với các nút khác, đảm bảo nền tảng vững chắc cho việc truy xuất dữ liệu chính xác sau này.
- Chỉ mục dữ liệu: Sau khi nhập dữ liệu, LlamaIndex hỗ trợ lập chỉ mục dữ liệu này thành định dạng có thể truy xuất được. Ở chế độ nền, nó phân tích các tài liệu thô thành các biểu diễn trung gian, tính toán nhúng vector và suy ra siêu dữ liệu. Trong số các chỉ mục, 'VectorStoreIndex' thường là lựa chọn hàng đầu.
Các loại chỉ mục trong LlamaIndex: Chìa khóa cho dữ liệu có tổ chức
LlamaIndex cung cấp nhiều loại chỉ mục khác nhau, mỗi loại dành cho các nhu cầu và trường hợp sử dụng khác nhau. Cốt lõi của các chỉ mục này là các "nút" như đã thảo luận ở trên. Hãy cùng tìm hiểu về các chỉ mục LlamaIndex cùng cơ chế hoạt động và ứng dụng của chúng.
1. Danh sách chỉ mục:
- Cơ chế: Chỉ mục Danh sách sắp xếp các nút một cách tuần tự giống như một danh sách. Đăng dữ liệu đầu vào vào các nút, chúng được sắp xếp theo kiểu tuyến tính, sẵn sàng để được truy vấn tuần tự hoặc thông qua từ khóa hoặc phần nhúng.
- Lợi thế: Loại chỉ mục này tỏa sáng khi có nhu cầu truy vấn tuần tự. LlamaIndex đảm bảo việc sử dụng toàn bộ dữ liệu đầu vào của bạn, ngay cả khi nó vượt quá giới hạn mã thông báo của LLM, bằng cách truy vấn văn bản thông minh từ mỗi nút và tinh chỉnh các câu trả lời khi nó điều hướng xuống danh sách.
2. Chỉ mục cửa hàng Vector:
- Cơ chế: Tại đây, các nút chuyển đổi thành các phần nhúng vectơ, được lưu trữ cục bộ hoặc trong cơ sở dữ liệu vectơ chuyên dụng như Milvus. Khi được truy vấn, nó tìm nạp các nút giống nhất top_k, chuyển chúng đến bộ tổng hợp phản hồi.
- Lợi thế: Nếu quy trình làm việc của bạn phụ thuộc vào việc so sánh văn bản để tìm sự tương đồng về ngữ nghĩa thông qua tìm kiếm vectơ thì bạn có thể sử dụng chỉ mục này.
3. Chỉ số cây:
- Cơ chế: Trong Chỉ mục cây, dữ liệu đầu vào phát triển thành cấu trúc cây, được xây dựng từ dưới lên từ các nút lá (các khối dữ liệu gốc). Các nút gốc xuất hiện dưới dạng bản tóm tắt của các nút lá, được tạo bằng GPT. Trong quá trình truy vấn, chỉ mục cây có thể di chuyển từ nút gốc đến nút lá hoặc xây dựng phản hồi trực tiếp từ các nút lá đã chọn.
- Lợi thế: Với Chỉ mục dạng cây, việc truy vấn các đoạn văn bản dài trở nên hiệu quả hơn và việc trích xuất thông tin từ các đoạn văn bản khác nhau được đơn giản hóa.
4. Chỉ mục Từ khoá:
- Cơ chế: Bản đồ các từ khóa tới các nút tạo thành cốt lõi của Chỉ mục từ khóa. Khi được truy vấn, các từ khóa sẽ được chọn ra khỏi truy vấn và chỉ các nút được ánh xạ mới được đưa vào tiêu điểm.
- Lợi thế: Khi bạn có truy vấn người dùng rõ ràng, bạn có thể sử dụng Chỉ mục từ khóa. Ví dụ: việc sàng lọc các tài liệu chăm sóc sức khỏe sẽ trở nên hiệu quả hơn khi chỉ tập trung vào các tài liệu liên quan đến COVID-19.
Cài đặt LlamaIndex
Cài đặt LlamaIndex là một quá trình đơn giản. Bạn có thể chọn cài đặt nó trực tiếp từ Pip hoặc từ nguồn. (Đảm bảo đã cài đặt python trong hệ thống của bạn hoặc bạn có thể sử dụng Google Colab)
1. Cài đặt từ Pip:
- Thực hiện lệnh sau:
pip install llama-index
- Chú thích: Trong khi cài đặt, LlamaIndex có thể tải xuống và lưu trữ các tệp cục bộ cho một số gói nhất định như NLTK và HuggingFace. Để chỉ định thư mục cho các tệp này, hãy sử dụng biến môi trường “LLAMA_INDEX_CACHE_DIR”.
2. Cài đặt từ nguồn:
- Đầu tiên, sao chép kho lưu trữ LlamaIndex từ GitHub:
git clone https://github.com/jerryjliu/llama_index.git
- Sau khi nhân bản, điều hướng đến thư mục dự án.
- Bạn sẽ cần Thơ để quản lý các gói phụ thuộc.
- Bây giờ, tạo môi trường ảo bằng Thơ:
poetry shell
- Cuối cùng, cài đặt các yêu cầu gói cốt lõi với:
poetry install
Thiết lập môi trường của bạn cho LlamaIndex
1. Thiết lập OpenAI:
- Theo mặc định, LlamaIndex sử dụng OpenAI
gpt-3.5-turbo
để tạo văn bản vàtext-embedding-ada-002
để truy xuất và nhúng. - Để sử dụng thiết lập này, bạn sẽ cần phải có một
OPENAI_API_KEY
. Nhận một mã thông báo API bằng cách đăng ký tại trang web của OpenAI và tạo mã thông báo API mới. - Bạn có thể linh hoạt tùy chỉnh Mô hình ngôn ngữ lớn (LLM) cơ bản theo nhu cầu dự án của mình. Tùy thuộc vào nhà cung cấp LLM của bạn, bạn có thể cần thêm mã thông báo và khóa môi trường.
2. Thiết lập môi trường cục bộ:
- Nếu bạn không muốn sử dụng OpenAI, LlamaIndex sẽ tự động chuyển sang các mô hình cục bộ –
LlamaCPP
vàllama2-chat-13B
để tạo văn bản vàBAAI/bge-small-en
để truy xuất và nhúng. - sử dụng
LlamaCPP
, hãy làm theo hướng dẫn cài đặt được cung cấp. Đảm bảo cài đặtllama-cpp-python
gói, được biên soạn lý tưởng để hỗ trợ GPU của bạn. Thiết lập này sẽ sử dụng khoảng 11.5GB bộ nhớ trên CPU và GPU. - Để nhúng cục bộ, hãy thực thi
pip install sentence-transformers
. Thiết lập cục bộ này sẽ sử dụng khoảng 500 MB bộ nhớ.
Với những thiết lập này, bạn có thể điều chỉnh môi trường của mình để tận dụng sức mạnh của OpenAI hoặc chạy các mô hình cục bộ, phù hợp với các yêu cầu và tài nguyên dự án của bạn.
Usecase đơn giản: Truy vấn trang web bằng LlamaIndex và OpenAI
Sau đây là một đoạn mã Python đơn giản để chứng minh cách bạn có thể truy vấn một trang web để có được thông tin chi tiết cụ thể:
!pip install llama-index html2text
import os from llama_index import VectorStoreIndex, SimpleWebPageReader # Enter your OpenAI key below: os.environ["OPENAI_API_KEY"] = "" # URL you want to load into your vector store here: url = "http://www.paulgraham.com/fr.html" # Load the URL into documents (multiple documents possible) documents = SimpleWebPageReader(html_to_text=True).load_data([url]) # Create vector store from documents index = VectorStoreIndex.from_documents(documents) # Create query engine so we can ask it questions: query_engine = index.as_query_engine() # Ask as many questions as you want against the loaded data: response = query_engine.query("What are the 3 best advise by Paul to raise money?") print(response)
The three best pieces of advice by Paul to raise money are: 1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run. 2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors. 3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Với tập lệnh này, bạn đã tạo một công cụ mạnh mẽ để trích xuất thông tin cụ thể từ một trang web chỉ bằng cách đặt câu hỏi. Đây chỉ là sơ lược về những gì có thể đạt được với LlamaIndex và OpenAI khi truy vấn dữ liệu web.
LlamaIndex vs Langchain: Lựa chọn dựa trên mục tiêu của bạn
Sự lựa chọn của bạn giữa LlamaIndex và chuỗi lang sẽ phụ thuộc vào mục tiêu dự án của bạn. Nếu bạn muốn phát triển một công cụ tìm kiếm thông minh, LlamaIndex là một lựa chọn đáng tin cậy, nổi trội với vai trò là một cơ chế lưu trữ thông minh cho việc truy xuất dữ liệu. Mặt khác, nếu bạn muốn tạo một hệ thống như ChatGPT với khả năng tích hợp plugin, Langchain là lựa chọn phù hợp. Nó không chỉ hỗ trợ nhiều phiên bản ChatGPT và LlamaIndex mà còn mở rộng chức năng bằng cách cho phép xây dựng các tác nhân đa nhiệm. Ví dụ: với Langchain, bạn có thể tạo các tác nhân có khả năng thực thi mã Python trong khi đồng thời thực hiện tìm kiếm trên Google. Tóm lại, trong khi LlamaIndex vượt trội về khả năng xử lý dữ liệu, Langchain lại kết hợp nhiều công cụ để mang lại một giải pháp toàn diện.

Tác phẩm nghệ thuật Logo của LlamaIndex được tạo bằng cách sử dụng midjourney