feat: Address review comments

- Add complexity parameter to LeannChat initialization (default: search_complexity)
- Fix chunk-size default in README documentation (256, not 2048)
- Add more index building parameters as CLI arguments:
  - --backend-name (hnsw/diskann)
  - --graph-degree (default: 32)
  - --build-complexity (default: 64)
  - --no-compact (disable compact storage)
  - --no-recompute (disable embedding recomputation)
- Update README to document all new parameters
This commit is contained in:
Andy Lee
2025-07-29 16:59:24 -07:00
parent ce77eef13a
commit 8c152c7a31
2 changed files with 50 additions and 6 deletions

View File

@@ -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
```
</details>
@@ -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)
```

View File

@@ -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}")