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:
12
README.md
12
README.md
@@ -189,7 +189,17 @@ All RAG examples share these common parameters:
|
|||||||
# LLM Parameters
|
# LLM Parameters
|
||||||
--llm TYPE # openai, ollama, or hf
|
--llm TYPE # openai, ollama, or hf
|
||||||
--llm-model MODEL # e.g., gpt-4o, llama3.2:1b, Qwen/Qwen2.5-1.5B-Instruct
|
--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)
|
--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>
|
</details>
|
||||||
@@ -216,7 +226,7 @@ python ./examples/document_rag.py --query "What are the main techniques LEANN ex
|
|||||||
```bash
|
```bash
|
||||||
--data-dir DIR # Directory containing documents to process (default: examples/data)
|
--data-dir DIR # Directory containing documents to process (default: examples/data)
|
||||||
--file-types .ext .ext # File extensions to process (default: .pdf .txt .md)
|
--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)
|
--chunk-overlap N # Overlap between chunks (default: 25)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -113,6 +113,38 @@ class BaseRAGExample(ABC):
|
|||||||
help="Search complexity for graph traversal (default: 64)",
|
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
|
# Add source-specific parameters
|
||||||
self._add_specific_arguments(parser)
|
self._add_specific_arguments(parser)
|
||||||
|
|
||||||
@@ -150,13 +182,13 @@ class BaseRAGExample(ABC):
|
|||||||
print(f"Total text chunks: {len(texts)}")
|
print(f"Total text chunks: {len(texts)}")
|
||||||
|
|
||||||
builder = LeannBuilder(
|
builder = LeannBuilder(
|
||||||
backend_name="hnsw",
|
backend_name=args.backend_name,
|
||||||
embedding_model=args.embedding_model,
|
embedding_model=args.embedding_model,
|
||||||
embedding_mode=args.embedding_mode,
|
embedding_mode=args.embedding_mode,
|
||||||
graph_degree=32,
|
graph_degree=args.graph_degree,
|
||||||
complexity=64,
|
complexity=args.build_complexity,
|
||||||
is_compact=True,
|
is_compact=not args.no_compact,
|
||||||
is_recompute=True,
|
is_recompute=not args.no_recompute,
|
||||||
num_threads=1, # Force single-threaded mode
|
num_threads=1, # Force single-threaded mode
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -180,6 +212,7 @@ class BaseRAGExample(ABC):
|
|||||||
index_path,
|
index_path,
|
||||||
llm_config=self.get_llm_config(args),
|
llm_config=self.get_llm_config(args),
|
||||||
system_prompt=f"You are a helpful assistant that answers questions about {self.name} data.",
|
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!")
|
print(f"\n[Interactive Mode] Chat with your {self.name} data!")
|
||||||
@@ -210,6 +243,7 @@ class BaseRAGExample(ABC):
|
|||||||
index_path,
|
index_path,
|
||||||
llm_config=self.get_llm_config(args),
|
llm_config=self.get_llm_config(args),
|
||||||
system_prompt=f"You are a helpful assistant that answers questions about {self.name} data.",
|
system_prompt=f"You are a helpful assistant that answers questions about {self.name} data.",
|
||||||
|
complexity=args.search_complexity,
|
||||||
)
|
)
|
||||||
|
|
||||||
print(f"\n[Query] {query}")
|
print(f"\n[Query] {query}")
|
||||||
|
|||||||
Reference in New Issue
Block a user