diff --git a/README.md b/README.md index 4665659..1a683a9 100755 --- a/README.md +++ b/README.md @@ -189,7 +189,17 @@ All RAG examples share these common parameters: # LLM Parameters --llm TYPE # openai, ollama, or hf --llm-model MODEL # e.g., gpt-4o, llama3.2:1b, Qwen/Qwen2.5-1.5B-Instruct + +# Search Parameters --top-k N # Number of results to retrieve (default: 20) +--search-complexity N # Search complexity for graph traversal (default: 64) + +# Index Building Parameters +--backend-name NAME # Backend to use: hnsw or diskann (default: hnsw) +--graph-degree N # Graph degree for index construction (default: 32) +--build-complexity N # Build complexity for index construction (default: 64) +--no-compact # Disable compact index storage +--no-recompute # Disable embedding recomputation ``` @@ -216,7 +226,7 @@ python ./examples/document_rag.py --query "What are the main techniques LEANN ex ```bash --data-dir DIR # Directory containing documents to process (default: examples/data) --file-types .ext .ext # File extensions to process (default: .pdf .txt .md) ---chunk-size N # Size of text chunks (default: 2048) +--chunk-size N # Size of text chunks (default: 256) --chunk-overlap N # Overlap between chunks (default: 25) ``` diff --git a/examples/base_rag_example.py b/examples/base_rag_example.py index b307b29..3d270e6 100644 --- a/examples/base_rag_example.py +++ b/examples/base_rag_example.py @@ -113,6 +113,38 @@ class BaseRAGExample(ABC): help="Search complexity for graph traversal (default: 64)", ) + # Index building parameters + index_group = parser.add_argument_group("Index Building Parameters") + index_group.add_argument( + "--backend-name", + type=str, + default="hnsw", + choices=["hnsw", "diskann"], + help="Backend to use for index (default: hnsw)", + ) + index_group.add_argument( + "--graph-degree", + type=int, + default=32, + help="Graph degree for index construction (default: 32)", + ) + index_group.add_argument( + "--build-complexity", + type=int, + default=64, + help="Build complexity for index construction (default: 64)", + ) + index_group.add_argument( + "--no-compact", + action="store_true", + help="Disable compact index storage", + ) + index_group.add_argument( + "--no-recompute", + action="store_true", + help="Disable embedding recomputation", + ) + # Add source-specific parameters self._add_specific_arguments(parser) @@ -150,13 +182,13 @@ class BaseRAGExample(ABC): print(f"Total text chunks: {len(texts)}") builder = LeannBuilder( - backend_name="hnsw", + backend_name=args.backend_name, embedding_model=args.embedding_model, embedding_mode=args.embedding_mode, - graph_degree=32, - complexity=64, - is_compact=True, - is_recompute=True, + graph_degree=args.graph_degree, + complexity=args.build_complexity, + is_compact=not args.no_compact, + is_recompute=not args.no_recompute, num_threads=1, # Force single-threaded mode ) @@ -180,6 +212,7 @@ class BaseRAGExample(ABC): index_path, llm_config=self.get_llm_config(args), system_prompt=f"You are a helpful assistant that answers questions about {self.name} data.", + complexity=args.search_complexity, ) print(f"\n[Interactive Mode] Chat with your {self.name} data!") @@ -210,6 +243,7 @@ class BaseRAGExample(ABC): index_path, llm_config=self.get_llm_config(args), system_prompt=f"You are a helpful assistant that answers questions about {self.name} data.", + complexity=args.search_complexity, ) print(f"\n[Query] {query}")