Tóm tắt nhanh: PIXELRAG là một hệ thống Visual Retrieval-Augmented Generation (Visual RAG) không biến tài liệu thành các đoạn text tuyến tính làm đầu vào duy nhất. Thay vào đó, nó render web page, PDF hoặc image thành screenshot tiles, tạo vector bằng Qwen3-VL-Embedding được fine-tune trên dữ liệu screenshot, tìm kiếm trên không gian thị giác bằng FAISS hoặc Qdrant, rồi đưa các tile ảnh phù hợp trực tiếp cho VLM đọc. Cách làm này giữ lại bảng, biểu đồ, layout và infographic vốn thường bị mất trong pipeline HTML parsing truyền thống.

PIXELRAG là gì?

PIXELRAG là mã nguồn mở cho bài toán tìm kiếm và hỏi–đáp trên tài liệu bằng cách tài liệu trông như thế nào, thay vì chỉ bằng chuỗi text được trích xuất. Repository chính thức mô tả hệ thống như một pipeline gồm render, embed, index và serve; core package có phiên bản 0.4.0, yêu cầu Python từ 3.12 và dùng giấy phép Apache-2.0.[1] [4]

Ý tưởng trung tâm khá đơn giản nhưng có tác động lớn đến thiết kế RAG: web không phải là một tập văn bản phẳng. Một bảng so sánh, biểu đồ doanh thu, sơ đồ quy trình, thẻ sản phẩm hay bố cục nhiều cột đều mang thông tin bằng vị trí, kích thước, màu sắc và quan hệ giữa các thành phần. Khi HTML được linearize thành text chunks, phần ngữ nghĩa thị giác đó có thể bị suy giảm hoặc biến mất.

PIXELRAG thay thế bước “parse rồi cắt text” bằng bước “render rồi cắt screenshot”. Các tile ảnh sau đó được embed và lập chỉ mục. Khi có truy vấn, hệ thống trả về những screenshot tile gần nhất; reader VLM có thể đọc trực tiếp ảnh và tạo câu trả lời dựa trên ngữ cảnh trực quan. Bài báo gốc gọi đây là cách tiếp cận pixel-native, tức retrieval và reading cùng hoạt động trong không gian pixel, không cần chuyển ảnh trở lại thành text ở giữa pipeline.[2]

Hình 1. Text RAG có nguy cơ làm mất bố cục và bảng; PIXELRAG giữ screenshot tile để retriever và VLM cùng khai thác tín hiệu thị giác.

Vì sao web screenshots có thể tốt hơn text cho RAG?

Trong RAG truyền thống, dữ liệu thường đi qua các bước tải trang, bóc HTML, loại bỏ boilerplate, chia đoạn, tạo embedding và truy hồi. Đây là pipeline hiệu quả cho các đoạn văn thuần túy, nhưng không phải lúc nào cũng phù hợp với tài liệu có cấu trúc phức tạp. Ví dụ, câu hỏi “biên lợi nhuận của từng quý là bao nhiêu?” có thể cần đọc đúng hàng–cột trong một bảng; câu hỏi “đường xu hướng nào tăng mạnh nhất?” có thể cần hiểu hình học của biểu đồ; còn câu hỏi “nút hành động chính nằm ở đâu?” có thể phụ thuộc vào layout giao diện.

Với screenshot retrieval, các tín hiệu sau được giữ lại cùng nhau:

Tín hiệu Text RAG thường xử lý PIXELRAG xử lý
Nội dung câu chữ Giữ lại tốt nếu parser hoạt động đúng Giữ trong screenshot và được VLM đọc
Quan hệ hàng–cột trong bảng Có thể bị phẳng thành chuỗi khó tái dựng Giữ nguyên vị trí trực quan
Biểu đồ, sơ đồ, infographic Có thể mất hoặc chỉ còn caption Giữ hình, nhãn, màu và bố cục
Thứ bậc thị giác Thường bị bỏ qua sau khi linearize Thể hiện qua kích thước, vị trí và khoảng trắng
Tìm kiếm bằng hình ảnh Không phải khả năng mặc định API hỗ trợ text query và image query

Điểm quan trọng là PIXELRAG không khẳng định mọi dữ liệu đều nên biến thành ảnh. Với văn bản đơn giản, text RAG vẫn có thể rẻ và dễ vận hành hơn. Giá trị của PIXELRAG xuất hiện rõ nhất khi bố cục là một phần của meaning, hoặc khi hệ thống cần thống nhất retrieval cho cả câu chữ và nội dung hình ảnh.

PIXELRAG hoạt động như thế nào?

Kiến trúc có thể chia thành năm lớp. Lớp đầu tiên nhận web page, PDF hoặc image. Lớp render dùng pixelshot, Playwright/CDP hoặc PDF renderer để tạo screenshot tiles. Lớp embedding dùng Qwen3-VL-Embedding; repository cho biết model được fine-tune bằng LoRA trên dữ liệu screenshot để đưa nội dung thị giác vào không gian có thể truy hồi.[1]

Tiếp theo, các vector được lưu trong index. FAISS là backend mặc định cho local index; Qdrant là lựa chọn mở rộng khi cần quantization, disk-backed vectors, payload filtering hoặc một collection được chia sẻ cho nhiều server.[1] Lớp serve cung cấp search API bằng FastAPI, nhận text hoặc image query. Cuối cùng, top-k screenshot tiles được đưa cho reader VLM để đọc trực tiếp.

Hình 2. Luồng dữ liệu từ web/PDF/image đến screenshot tiles, visual embeddings, index, search API và reader VLM.

Một cách nhìn thực dụng là tách hệ thống thành hai vòng đời. Indexing time là lúc render tài liệu, chunk tile, embed và build index; giai đoạn này tốn CPU/GPU, storage và thời gian. Query time là lúc embed câu hỏi, tìm top-k tile và gửi ảnh cho reader; giai đoạn này cần tối ưu latency, số tile và kích thước ảnh trong context.

Các tính năng nổi bật của PIXELRAG

1. Render tài liệu thành screenshot tiles

Lệnh pixelshot có thể render URL, local file hoặc PDF thành các tile ảnh. README của dự án minh họa việc trộn URL và file trong cùng một lệnh; với PDF, người dùng cài thêm pixelrag[pdf] và có thể chỉ định DPI.[1] Cách này tạo ra một đơn vị retrieval nhất quán cho nhiều định dạng dữ liệu.

2. Visual embedding được fine-tune cho screenshot retrieval

PIXELRAG sử dụng Qwen3-VL-Embedding và công bố adapter LoRA được fine-tune cho webpage retrieval. Đây là khác biệt quan trọng so với việc lấy một model image embedding tổng quát rồi hy vọng nó hiểu tốt các tile web có chữ nhỏ, bảng và layout dày đặc.[1] [2]

3. FAISS mặc định, Qdrant khi cần scale và filtering

FAISS phù hợp với local index và workflow self-hosted tối giản. Qdrant bổ sung các khả năng như quantization, payload filtering, disk-backed vectors và collection dùng chung. Repository cũng hỗ trợ append hoặc recreate collection trong lúc build index.[1]

4. Hosted API và visual Wikipedia search

Dự án cung cấp endpoint hosted https://api.pixelrag.ai/search, cho phép truy vấn index Wikipedia dựng sẵn mà không cần cài đặt hoặc API key theo README.[1] Trang chính thức hiện mô tả khoảng 8,28 triệu bài Wikipedia, 28,1 triệu screenshot tiles, embedding 2.048 chiều và FAISS index khoảng 214 GB; đây là các số liệu trạng thái của dịch vụ tại thời điểm kiểm tra, có thể thay đổi theo phiên bản index.[3]

5. Claude Code plugin: đưa “mắt” vào agent

Plugin pixelbrowse cho phép Claude Code chụp màn hình trang bằng pixelshot rồi đọc ảnh. Nó phù hợp với các tác vụ như tóm tắt trang có biểu đồ, đọc bảng hoặc quan sát bố cục giao diện. README nhấn mạnh plugin không cần MCP server hay backend riêng; skill chỉ gọi pixelshot trên máy cục bộ.[1]

6. Hỗ trợ image query

Ngoài text query, hosted service và website chính thức còn hỗ trợ tìm kiếm bằng image query. Điều này mở đường cho các bài toán “tìm trang có hình hoặc bố cục tương tự”, visual Wikipedia search và retrieval đa phương thức.[1] [3]

Hướng dẫn cài đặt PIXELRAG từng bước

Bước 0: Chuẩn bị môi trường

Theo pyproject.toml, package hiện yêu cầu Python >= 3.12.[4] Trên Linux, macOS Apple Silicon và hệ thống có CUDA, device: auto có thể chọn backend phù hợp; nếu không có GPU, CPU là fallback. Với Windows hoặc macOS, pixelshot có thể dùng Chrome/Chromium hệ thống hoặc Chromium của Playwright; biến môi trường CHROME_PATH cho phép chỉ định binary cụ thể khi auto-detect không tìm thấy trình duyệt.[1]

Một môi trường sạch giúp tránh xung đột dependency:

python3.12 -m venv .venv

source .venv/bin/activate

python -m pip install –upgrade pip

Nếu mục tiêu chỉ là render một trang, cài core package là đủ:

pip install pixelrag

Nếu mục tiêu là xây và serve index riêng, cài extra tương ứng. index kéo theo nhóm embedding; serve cài FastAPI, FAISS, Transformers, PyTorch và các thành phần reader/search server.[4]

pip install ‘pixelrag[index]’

# hoặc cài thêm Qdrant client khi cần backend Qdrant

pip install ‘pixelrag[index,qdrant]’

Hình 3. Chọn đường triển khai theo mục tiêu: hosted API, render cục bộ, index dữ liệu riêng hoặc Qdrant.

Bước 1: Dùng hosted API nhanh nhất

Đây là đường ngắn nhất để kiểm tra ý tưởng mà không tải index hàng trăm GB. Gửi một POST request đến search endpoint:

curl -X POST https://api.pixelrag.ai/search \

-H “Content-Type: application/json” \

-d ‘{“queries”: [{“text”: “What is the capital of France?”}], “n_docs”: 5}’

Trong production, nên bọc request bằng timeout, retry có backoff và logging query/latency. Hosted endpoint phù hợp cho prototype, demo hoặc workload không yêu cầu dữ liệu riêng. Khi dữ liệu có tính nội bộ, không nên gửi nội dung nhạy cảm lên endpoint công khai nếu chưa đánh giá chính sách bảo mật và điều khoản dịch vụ.

Bước 2: Render một web page thành tiles

Để xem PIXELRAG ở lớp render, chạy:

pixelshot https://en.wikipedia.org/wiki/Python –output ./tiles

Có thể gọi programmatically trong Python:

from pixelrag_render import render_url

tiles = render_url(

“https://en.wikipedia.org/wiki/Python”,

“./tiles”,

)

print(tiles)

Với PDF, cài PDF extra và chỉ định DPI:

pip install ‘pixelrag[pdf]’

curl -sL -o paper.pdf https://arxiv.org/pdf/2503.09516

pixelshot paper.pdf -o ./paper_tiles –dpi 200

Ở bước này, tiles là artifact trung gian có thể được đưa cho VLM hoặc chuyển sang các stage chunk, embed và build-index. Nếu render trang động, cần kiểm tra cookie, JavaScript, viewport, trạng thái đăng nhập và khả năng reproducible của snapshot.

Bước 3: Xây visual index cho tài liệu riêng

Tạo file pixelrag.yaml ở thư mục dự án:

source:

type: local

path: ./my_docs

embed:

model: Qwen/Qwen3-VL-Embedding-2B

device: auto # cuda trên Linux, mps trên macOS, cpu là fallback

output: ./my_index

Sau đó chạy orchestrator:

pixelrag index build

Khi pipeline hoàn tất, serve index bằng FastAPI:

pixelrag serve –index-dir ./my_index –port 30001

Gọi API nội bộ:

curl -X POST http://localhost:30001/search \

-H “Content-Type: application/json” \

-d ‘{“queries”: [{“text”: “Tóm tắt doanh thu theo quý”}], “n_docs”: 5}’

Trong môi trường thực tế, nên lưu manifest giữa các bước, version hóa model và cấu hình render, đồng thời ghi lại nguồn URL/file, timestamp, viewport, DPI, tile size và checksum. Những metadata này giúp debug trường hợp retriever trả tile đúng nhưng reader đọc nhầm phiên bản tài liệu.

Bước 4: Chạy từng stage độc lập

Nếu cần kiểm soát chi tiết hoặc phân tán pipeline, có thể chạy riêng từng stage:

pip install ‘pixelrag

pixelrag chunk \

–tiles-dir ./tiles

pixelrag embed \

–shard-dir ./tiles \

–output-dir ./embeddings \

–gpu-ids 0,1

pixelrag build-index \

–embeddings-dir ./embeddings \

–output-dir ./index

Cách chạy độc lập hữu ích khi render chạy trên worker CPU, embedding chạy trên GPU node và index được build ở một job riêng. Nó cũng giúp khoanh vùng lỗi: render sai khác với embedding sai, còn index/serve sai lại là lớp khác.

Bước 5: Dùng index dựng sẵn từ Hugging Face

README của dự án hướng dẫn tải base index Wikipedia từ dataset repository. Chỉ riêng base index đã khoảng 217 GB, vì vậy cần kiểm tra dung lượng đĩa, băng thông và RAM trước khi bắt đầu.[1]

pip install ‘pixelrag[serve]’

huggingface-cli download StarTrail-org/pixelrag-faiss-indexes \

–repo-type dataset \

–include “search_index_normed_v2/*” \

–local-dir ./index

pixelrag serve \

–index-dir ./index/search_index_normed_v2 \

–port 30001

Điểm cần phân biệt là hosted APIself-hosted prebuilt index có cùng ý tưởng retrieval nhưng khác về vận hành, dữ liệu, version index và chi phí hạ tầng. Không nên lấy latency hoặc kết quả của một môi trường để suy luận trực tiếp cho môi trường còn lại.

Bước 6: Dùng Qdrant cho collection có filter hoặc scale lớn

Khởi động Qdrant cục bộ bằng Docker:

docker run -p 6333:6333 qdrant/qdrant

pip install ‘pixelrag[serve,qdrant]’

Build index vào collection:

pixelrag build-index \

–embeddings-dir ./embeddings \

–output-dir ./index \

–backend qdrant \

–qdrant-url http://localhost:6333 \

–collection pixelrag

Nếu cần quantization, truyền một file JSON cấu hình, ví dụ scalar INT8:

{

“scalar”: {

“type”: “int8”,

“quantile”: 0.99,

“always_ram”: true

}

}

Sau đó serve collection:

pixelrag serve \

–index-dir ./index \

–qdrant-url http://localhost:6333 \

–port 30001

Quantization thường làm giảm memory footprint và tăng tốc truy vấn, nhưng có trade-off về recall. Cần benchmark bằng dữ liệu và query thật trước khi chọn cấu hình production.[1]

Bước 7: Cài plugin pixelbrowse cho Claude Code

Để biến việc screenshot thành một kỹ năng của Claude Code, dùng uv tool hoặc pipx để bảo đảm executable pixelshot nằm trên PATH:

uv tool install pixelrag

claude plugin marketplace add StarTrail-org/PixelRAG

claude plugin install pixelbrowse@pixelrag-plugins

Có thể yêu cầu Claude chụp và đọc một trang:

claude -p “screenshot https://news.ycombinator.com and summarize the top stories”

claude -p “screenshot https://arxiv.org/abs/2404.12387 and explain the key findings”

Trong phiên interactive, dùng slash command:

/screenshot https://example.com

Các use case có thể áp dụng PIXELRAG

Hình 4. PIXELRAG phù hợp nhất với dữ liệu mà layout, hình ảnh hoặc định dạng trực quan mang thông tin.

Tài liệu tài chính và báo cáo quản trị

Báo cáo tài chính thường chứa bảng nhiều cột, chú thích chân trang, biểu đồ và nhóm chỉ số. Screenshot tile giúp retriever giữ quan hệ giữa tiêu đề, đơn vị, hàng và cột. Use case phù hợp gồm tìm chỉ tiêu theo kỳ, đối chiếu bảng với biểu đồ và hỏi–đáp trên dashboard đã render.

Tuy nhiên, nếu câu trả lời cần tính toán chính xác trên hàng triệu bản ghi, nên kết hợp PIXELRAG với structured extraction hoặc database. PIXELRAG giúp tìm đúng vùng thông tin, còn hệ thống tính toán đảm bảo arithmetic và auditability.

Kho PDF nghiên cứu và tài liệu kỹ thuật

Paper, specification và manual thường có công thức, figure, bảng benchmark và layout hai cột. Một text parser tốt vẫn có thể trích nội dung chữ, nhưng quan hệ giữa figure, caption và đoạn phân tích có thể khó bảo toàn. PIXELRAG có thể dùng để retrieve các trang hoặc tile liên quan, sau đó reader VLM tổng hợp câu trả lời.

Catalogue, product sheet và tài liệu bán hàng

Catalogue có thể đặt tên sản phẩm, hình ảnh, thông số và badge trong cùng một layout. Image query mở ra khả năng tìm sản phẩm theo mẫu hình hoặc bố cục, còn text query dùng để tìm thông số. Đây là ví dụ tự nhiên cho retrieval kết hợp chữ và hình.

AI agent đọc dashboard và web app

Agent thường cần quan sát trang như một người dùng: bảng điều khiển, chart, modal, trạng thái loading hoặc nút thao tác. Plugin pixelbrowse cho thấy một đường tích hợp nhẹ cho Claude Code; ở cấp hệ thống, doanh nghiệp có thể dùng pixelshot trong agent runtime rồi đưa tile vào VLM.

Cần bổ sung kiểm soát truy cập, redaction dữ liệu nhạy cảm và cơ chế xác minh hành động trước khi agent click hoặc submit. Screenshot retrieval giúp agent nhìn thấy giao diện, nhưng không tự động giải quyết vấn đề authorization hay safety của browser automation.

Visual search và multimodal knowledge base

Khi query đầu vào là ảnh, hệ thống có thể tìm các tile có hình ảnh hoặc bố cục tương tự. Use case gồm tìm trang Wikipedia theo tranh/địa danh, tìm slide có chart tương tự, hoặc locate tài liệu có layout giống mẫu. Với dữ liệu doanh nghiệp, cần huấn luyện/đánh giá trên phân phối hình ảnh thực tế thay vì chỉ dựa vào demo Wikipedia.

News corpus nhiều bố cục và nội dung cập nhật

News site thường dùng layout, bảng, ảnh, caption và template khác nhau. Bài báo PIXELRAG báo cáo kết quả trên noisy news corpora như LiveVQA và agentic benchmark như MoNaCo, nhưng các con số này là kết quả nghiên cứu của tác giả trên thiết lập benchmark cụ thể, không phải SLA production.[2]

Đánh đổi kỹ thuật và lưu ý khi triển khai

PIXELRAG thay đổi trade-off của RAG. Screenshot giúp bảo toàn ngữ cảnh nhưng tạo thêm chi phí render, storage và visual embedding. Một tile ảnh cũng có thể tiêu thụ token đáng kể khi đưa vào VLM. Bài báo cho biết image compression ở độ phân giải thấp hơn có thể giảm token cost tới 3 lần trong khi vẫn giữ accuracy trong thí nghiệm của họ.[2] Khi áp dụng thực tế, cần đo lại với model reader, kích thước tile và độ phân giải của chính hệ thống.

Hạng mục Câu hỏi cần benchmark
Render Một URL mất bao lâu? Trang động có ổn định không?
Indexing Throughput tile/giây và GPU memory là bao nhiêu?
Retrieval Recall@k, MRR hoặc nDCG trên query thật đạt mức nào?
Reader Accuracy, citation faithfulness và hallucination thay đổi ra sao?
Storage Tile, vector, metadata và bản backup chiếm bao nhiêu?
Cost Chi phí render + embedding + VLM/query so với text RAG?
Security Có dữ liệu riêng tư trong screenshot hoặc log không?

Bài báo gốc báo cáo pipeline có thể mở rộng đến kho 30 triệu screenshot images trên full Wikipedia và cải thiện accuracy tối đa 18,1% so với text-based baselines trong một số benchmark.[2] Trong khi đó, website chính thức hiển thị 28,1 triệu tiles ở trạng thái hiện tại.[3] Sự khác nhau này có thể đến từ phiên bản corpus/index hoặc cách đếm, vì vậy nên coi đây là số liệu được gắn với từng nguồn và thời điểm, không phải một con số bất biến.

Khi nên chọn PIXELRAG?

Nên thử PIXELRAG khi tài liệu có bảng, biểu đồ, sơ đồ, infographic, nhiều cột, hình ảnh hoặc layout là một phần của câu trả lời. Nó cũng đáng cân nhắc khi hệ thống cần một representation thống nhất cho text query và image query.

Không nên mặc định dùng PIXELRAG cho mọi workload. Nếu dữ liệu là text ngắn, có cấu trúc rõ trong database hoặc yêu cầu SQL/aggregation chính xác, text RAG hay structured retrieval có thể đơn giản, rẻ và dễ audit hơn. Kiến trúc hybrid thường là lựa chọn thực dụng: dùng text/metadata filter để thu hẹp candidate set, dùng pixel retrieval để giữ tín hiệu thị giác, rồi reader VLM hoặc LLM tổng hợp câu trả lời.

FAQ: câu trả lời nhanh về PIXELRAG

PIXELRAG có phải là một vector database không?

Không hoàn toàn. PIXELRAG là một pipeline Visual RAG gồm render, chunk, embedding, index và serve. FAISS là backend index mặc định; Qdrant là backend tùy chọn cho nhu cầu filtering, quantization và collection dùng chung.[1]

PIXELRAG có cần OCR không?

Pipeline cốt lõi không cần chuyển screenshot về text bằng OCR trước khi retrieval/reading. Screenshot được embed bằng model vision-language và tile được đưa trực tiếp cho VLM. Điều này không có nghĩa OCR bị cấm trong mọi hệ thống; OCR vẫn có thể bổ sung cho filter, accessibility hoặc structured extraction tùy use case.[1] [2]

Có thể dùng PIXELRAG với tài liệu riêng không?

Có. README hướng dẫn tạo pixelrag.yaml với local source, model Qwen3-VL-Embedding-2B, device: auto và output directory, sau đó chạy pixelrag index build và pixelrag serve.[1]

Có cần GPU để thử PIXELRAG không?

Không bắt buộc cho mọi bước. Render core có thể chạy không có GPU và cấu hình device: auto có CPU fallback; embedding/indexing trên kho lớn sẽ thực tế hơn khi có GPU. Trước khi triển khai, hãy benchmark theo kích thước corpus và throughput mong muốn.[1]

FAISS hay Qdrant phù hợp hơn?

FAISS phù hợp với local index và triển khai đơn giản. Qdrant phù hợp hơn khi cần quantization, filtering, disk-backed vectors, append/recreate collection hoặc chia sẻ một collection cho nhiều server.[1]

PIXELRAG có thay thế hoàn toàn text RAG không?

Không. PIXELRAG là một representation và retrieval strategy bổ sung. Với dữ liệu nhiều layout hoặc visual semantics, nó có thể tạo lợi thế; với văn bản thuần túy hoặc truy vấn cần phép tính có cấu trúc, text/database retrieval vẫn có thể tốt hơn. Hybrid RAG thường là phương án cân bằng.

Kết luận

PIXELRAG đặt ra một câu hỏi đáng chú ý cho thiết kế RAG: nếu web vốn được tạo để con người nhìn và tương tác, tại sao retrieval luôn phải bắt đầu bằng việc làm phẳng nó thành text? Bằng cách render tài liệu thành screenshot tiles, fine-tune visual embedding và đưa tile ảnh trực tiếp cho VLM, PIXELRAG cố gắng giữ nguyên phần ngữ nghĩa mà HTML parsing thường làm mất.

Giá trị của hệ thống nằm ở chỗ nó không chỉ là một demo visual search. Repository đã tách các stage đủ rõ để thử nghiệm: pixelshot cho render, pixelrag index cho pipeline, pixelrag serve cho API, FAISS cho local index và Qdrant cho backend linh hoạt hơn.[1] Con đường bắt đầu hợp lý là hosted API hoặc render một vài trang, tiếp theo đo retrieval trên dữ liệu thật, rồi mới quyết định có đầu tư vào prebuilt index, GPU, Qdrant và reader VLM hay không.

Takeaway: Khi layout, bảng, biểu đồ và hình ảnh mang thông tin, hãy đánh giá retrieval trên screenshot như một representation nghiêm túc bên cạnh text—không phải chỉ như một lớp minh họa.

References

1] [StarTrail-org/PixelRAG — Official GitHub repository and README

2] [Wang et al. — “PIXELRAG: Web Screenshots Beat Text for Retrieval-Augmented Generation”, arXiv:2606.28344

3] [PixelRAG — Official visual Wikipedia search website

4] [PixelRAG `pyproject.toml` — package metadata, Python requirement and optional dependencies

 

Guest