From eed7b0190ba656cb02f4af274ffc04cfd8298111 Mon Sep 17 00:00:00 2001 From: Li Yin Date: Wed, 3 Jul 2024 14:10:10 -0700 Subject: [PATCH 1/7] update class hier --- README.md | 2 +- class_hierarchy_edges.csv | 6 +++--- docs/source/_static/class_hierarchy.html | 4 ++-- lightrag/README.md | 2 +- lightrag/pyproject.toml | 2 +- test_pyvis.py | 15 --------------- visualize.py | 2 +- 7 files changed, 9 insertions(+), 24 deletions(-) delete mode 100644 test_pyvis.py diff --git a/README.md b/README.md index ff6ba48c..5655a7f5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![LightRAG Logo](https://raw.githubusercontent.com/SylphAI-Inc/LightRAG/main/docs/source/_static/images/LightRAG-logo-doc.jpeg) -## ⚡⚡⚡ The PyTorch Library for Large language Model (LLM) Applications ⚡⚡⚡ +### ⚡⚡⚡ The PyTorch Library for Large language Model (LLM) Applications ⚡⚡⚡ *LightRAG* helps developers with both building and optimizing *Retriever-Agent-Generator (RAG)* pipelines. It is *light*, *modular*, and *robust*. diff --git a/class_hierarchy_edges.csv b/class_hierarchy_edges.csv index a9348645..bbbcc098 100644 --- a/class_hierarchy_edges.csv +++ b/class_hierarchy_edges.csv @@ -1,3 +1,6 @@ +Component,BooleanParser +Component,IntParser +Component,FloatParser Component,ListParser Component,JsonParser Component,YamlParser @@ -15,7 +18,6 @@ Component,FunComponent Component,ReActAgent Component,OutputParser Component,TextSplitter -Component,DocumentSplitter Component,ToEmbeddings Component,RetrieverOutputToContextStr Component,DefaultLLMJudge @@ -56,8 +58,6 @@ DataClass,DialogTurn DataClass,Instruction DataClass,GeneratorStatesRecord DataClass,GeneratorCallRecord -Generator,CoTGenerator -Generator,CoTGeneratorWithJsonOutput OutputParser,YamlOutputParser OutputParser,JsonOutputParser OutputParser,ListOutputParser diff --git a/docs/source/_static/class_hierarchy.html b/docs/source/_static/class_hierarchy.html index f6f6256f..22e4202a 100644 --- a/docs/source/_static/class_hierarchy.html +++ b/docs/source/_static/class_hierarchy.html @@ -88,8 +88,8 @@

// parsing and collecting nodes and edges from the python - nodes = new vis.DataSet([{"color": "#97c2fc", "id": "Component", "label": "Component", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ListParser", "label": "ListParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "JsonParser", "label": "JsonParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "YamlParser", "label": "YamlParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ToolManager", "label": "ToolManager", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Prompt", "label": "Prompt", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ModelClient", "label": "ModelClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Retriever", "label": "Retriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionTool", "label": "FunctionTool", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Tokenizer", "label": "Tokenizer", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Generator", "label": "Generator", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Embedder", "label": "Embedder", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BatchEmbedder", "label": "BatchEmbedder", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Sequential", "label": "Sequential", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunComponent", "label": "FunComponent", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ReActAgent", "label": "ReActAgent", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "OutputParser", "label": "OutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "TextSplitter", "label": "TextSplitter", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DocumentSplitter", "label": "DocumentSplitter", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ToEmbeddings", "label": "ToEmbeddings", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RetrieverOutputToContextStr", "label": "RetrieverOutputToContextStr", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DefaultLLMJudge", "label": "DefaultLLMJudge", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LLMAugmenter", "label": "LLMAugmenter", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "CohereAPIClient", "label": "CohereAPIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "TransformersClient", "label": "TransformersClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GroqAPIClient", "label": "GroqAPIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GoogleGenAIClient", "label": "GoogleGenAIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "OpenAIClient", "label": "OpenAIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "AnthropicAPIClient", "label": "AnthropicAPIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BM25Retriever", "label": "BM25Retriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "PostgresRetriever", "label": "PostgresRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RerankerRetriever", "label": "RerankerRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LLMRetriever", "label": "LLMRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FAISSRetriever", "label": "FAISSRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "CoTGenerator", "label": "CoTGenerator", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "CoTGeneratorWithJsonOutput", "label": "CoTGeneratorWithJsonOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "YamlOutputParser", "label": "YamlOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "JsonOutputParser", "label": "JsonOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ListOutputParser", "label": "ListOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BooleanOutputParser", "label": "BooleanOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Generic", "label": "Generic", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LocalDB", "label": "LocalDB", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GeneratorOutput", "label": "GeneratorOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Parameter", "label": "Parameter", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Sample", "label": "Sample", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Sampler", "label": "Sampler", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RandomSampler", "label": "RandomSampler", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ClassSampler", "label": "ClassSampler", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Enum", "label": "Enum", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DataClassFormatType", "label": "DataClassFormatType", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ModelType", "label": "ModelType", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DistanceToOperator", "label": "DistanceToOperator", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "OptionalPackages", "label": "OptionalPackages", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DataClass", "label": "DataClass", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "EmbedderOutput", "label": "EmbedderOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RetrieverOutput", "label": "RetrieverOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionDefinition", "label": "FunctionDefinition", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Function", "label": "Function", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionExpression", "label": "FunctionExpression", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionOutput", "label": "FunctionOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "StepOutput", "label": "StepOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Document", "label": "Document", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DialogTurn", "label": "DialogTurn", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Instruction", "label": "Instruction", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GeneratorStatesRecord", "label": "GeneratorStatesRecord", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GeneratorCallRecord", "label": "GeneratorCallRecord", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Optimizer", "label": "Optimizer", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BootstrapFewShot", "label": "BootstrapFewShot", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LLMOptimizer", "label": "LLMOptimizer", "shape": "dot", "size": 10}]); - edges = new vis.DataSet([{"arrows": "to", "from": "Component", "to": "ListParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "JsonParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "YamlParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "ToolManager", "width": 1}, {"arrows": "to", "from": "Component", "to": "Prompt", "width": 1}, {"arrows": "to", "from": "Component", "to": "ModelClient", "width": 1}, {"arrows": "to", "from": "Component", "to": "Retriever", "width": 1}, {"arrows": "to", "from": "Component", "to": "FunctionTool", "width": 1}, {"arrows": "to", "from": "Component", "to": "Tokenizer", "width": 1}, {"arrows": "to", "from": "Component", "to": "Generator", "width": 1}, {"arrows": "to", "from": "Component", "to": "Embedder", "width": 1}, {"arrows": "to", "from": "Component", "to": "BatchEmbedder", "width": 1}, {"arrows": "to", "from": "Component", "to": "Sequential", "width": 1}, {"arrows": "to", "from": "Component", "to": "FunComponent", "width": 1}, {"arrows": "to", "from": "Component", "to": "ReActAgent", "width": 1}, {"arrows": "to", "from": "Component", "to": "OutputParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "TextSplitter", "width": 1}, {"arrows": "to", "from": "Component", "to": "DocumentSplitter", "width": 1}, {"arrows": "to", "from": "Component", "to": "ToEmbeddings", "width": 1}, {"arrows": "to", "from": "Component", "to": "RetrieverOutputToContextStr", "width": 1}, {"arrows": "to", "from": "Component", "to": "DefaultLLMJudge", "width": 1}, {"arrows": "to", "from": "Component", "to": "LLMAugmenter", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "CohereAPIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "TransformersClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "GroqAPIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "GoogleGenAIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "OpenAIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "AnthropicAPIClient", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "BM25Retriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "PostgresRetriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "RerankerRetriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "LLMRetriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "FAISSRetriever", "width": 1}, {"arrows": "to", "from": "Generator", "to": "CoTGenerator", "width": 1}, {"arrows": "to", "from": "Generator", "to": "CoTGeneratorWithJsonOutput", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "YamlOutputParser", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "JsonOutputParser", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "ListOutputParser", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "BooleanOutputParser", "width": 1}, {"arrows": "to", "from": "Generic", "to": "LocalDB", "width": 1}, {"arrows": "to", "from": "Generic", "to": "Retriever", "width": 1}, {"arrows": "to", "from": "Generic", "to": "GeneratorOutput", "width": 1}, {"arrows": "to", "from": "Generic", "to": "Parameter", "width": 1}, {"arrows": "to", "from": "Generic", "to": "Sample", "width": 1}, {"arrows": "to", "from": "Generic", "to": "Sampler", "width": 1}, {"arrows": "to", "from": "Generic", "to": "RandomSampler", "width": 1}, {"arrows": "to", "from": "Generic", "to": "ClassSampler", "width": 1}, {"arrows": "to", "from": "Sampler", "to": "RandomSampler", "width": 1}, {"arrows": "to", "from": "Sampler", "to": "ClassSampler", "width": 1}, {"arrows": "to", "from": "Enum", "to": "DataClassFormatType", "width": 1}, {"arrows": "to", "from": "Enum", "to": "ModelType", "width": 1}, {"arrows": "to", "from": "Enum", "to": "DistanceToOperator", "width": 1}, {"arrows": "to", "from": "Enum", "to": "OptionalPackages", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "EmbedderOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "GeneratorOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "RetrieverOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "FunctionDefinition", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "Function", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "FunctionExpression", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "FunctionOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "StepOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "Document", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "DialogTurn", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "Instruction", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "GeneratorStatesRecord", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "GeneratorCallRecord", "width": 1}, {"arrows": "to", "from": "Optimizer", "to": "BootstrapFewShot", "width": 1}, {"arrows": "to", "from": "Optimizer", "to": "LLMOptimizer", "width": 1}]); + nodes = new vis.DataSet([{"color": "#97c2fc", "id": "Component", "label": "Component", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BooleanParser", "label": "BooleanParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "IntParser", "label": "IntParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FloatParser", "label": "FloatParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ListParser", "label": "ListParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "JsonParser", "label": "JsonParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "YamlParser", "label": "YamlParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ToolManager", "label": "ToolManager", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Prompt", "label": "Prompt", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ModelClient", "label": "ModelClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Retriever", "label": "Retriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionTool", "label": "FunctionTool", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Tokenizer", "label": "Tokenizer", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Generator", "label": "Generator", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Embedder", "label": "Embedder", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BatchEmbedder", "label": "BatchEmbedder", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Sequential", "label": "Sequential", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunComponent", "label": "FunComponent", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ReActAgent", "label": "ReActAgent", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "OutputParser", "label": "OutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "TextSplitter", "label": "TextSplitter", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ToEmbeddings", "label": "ToEmbeddings", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RetrieverOutputToContextStr", "label": "RetrieverOutputToContextStr", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DefaultLLMJudge", "label": "DefaultLLMJudge", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LLMAugmenter", "label": "LLMAugmenter", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "CohereAPIClient", "label": "CohereAPIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "TransformersClient", "label": "TransformersClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GroqAPIClient", "label": "GroqAPIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GoogleGenAIClient", "label": "GoogleGenAIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "OpenAIClient", "label": "OpenAIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "AnthropicAPIClient", "label": "AnthropicAPIClient", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BM25Retriever", "label": "BM25Retriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "PostgresRetriever", "label": "PostgresRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RerankerRetriever", "label": "RerankerRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LLMRetriever", "label": "LLMRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FAISSRetriever", "label": "FAISSRetriever", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "YamlOutputParser", "label": "YamlOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "JsonOutputParser", "label": "JsonOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ListOutputParser", "label": "ListOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BooleanOutputParser", "label": "BooleanOutputParser", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Sampler", "label": "Sampler", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RandomSampler", "label": "RandomSampler", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ClassSampler", "label": "ClassSampler", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Enum", "label": "Enum", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DataClassFormatType", "label": "DataClassFormatType", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "ModelType", "label": "ModelType", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DistanceToOperator", "label": "DistanceToOperator", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "OptionalPackages", "label": "OptionalPackages", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DataClass", "label": "DataClass", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "EmbedderOutput", "label": "EmbedderOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GeneratorOutput", "label": "GeneratorOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "RetrieverOutput", "label": "RetrieverOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionDefinition", "label": "FunctionDefinition", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Function", "label": "Function", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionExpression", "label": "FunctionExpression", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "FunctionOutput", "label": "FunctionOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "StepOutput", "label": "StepOutput", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Document", "label": "Document", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "DialogTurn", "label": "DialogTurn", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Instruction", "label": "Instruction", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GeneratorStatesRecord", "label": "GeneratorStatesRecord", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "GeneratorCallRecord", "label": "GeneratorCallRecord", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Optimizer", "label": "Optimizer", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "BootstrapFewShot", "label": "BootstrapFewShot", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LLMOptimizer", "label": "LLMOptimizer", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "LocalDB", "label": "LocalDB", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Parameter", "label": "Parameter", "shape": "dot", "size": 10}, {"color": "#97c2fc", "id": "Sample", "label": "Sample", "shape": "dot", "size": 10}]); + edges = new vis.DataSet([{"arrows": "to", "from": "Component", "to": "BooleanParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "IntParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "FloatParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "ListParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "JsonParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "YamlParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "ToolManager", "width": 1}, {"arrows": "to", "from": "Component", "to": "Prompt", "width": 1}, {"arrows": "to", "from": "Component", "to": "ModelClient", "width": 1}, {"arrows": "to", "from": "Component", "to": "Retriever", "width": 1}, {"arrows": "to", "from": "Component", "to": "FunctionTool", "width": 1}, {"arrows": "to", "from": "Component", "to": "Tokenizer", "width": 1}, {"arrows": "to", "from": "Component", "to": "Generator", "width": 1}, {"arrows": "to", "from": "Component", "to": "Embedder", "width": 1}, {"arrows": "to", "from": "Component", "to": "BatchEmbedder", "width": 1}, {"arrows": "to", "from": "Component", "to": "Sequential", "width": 1}, {"arrows": "to", "from": "Component", "to": "FunComponent", "width": 1}, {"arrows": "to", "from": "Component", "to": "ReActAgent", "width": 1}, {"arrows": "to", "from": "Component", "to": "OutputParser", "width": 1}, {"arrows": "to", "from": "Component", "to": "TextSplitter", "width": 1}, {"arrows": "to", "from": "Component", "to": "ToEmbeddings", "width": 1}, {"arrows": "to", "from": "Component", "to": "RetrieverOutputToContextStr", "width": 1}, {"arrows": "to", "from": "Component", "to": "DefaultLLMJudge", "width": 1}, {"arrows": "to", "from": "Component", "to": "LLMAugmenter", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "CohereAPIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "TransformersClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "GroqAPIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "GoogleGenAIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "OpenAIClient", "width": 1}, {"arrows": "to", "from": "ModelClient", "to": "AnthropicAPIClient", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "BM25Retriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "PostgresRetriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "RerankerRetriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "LLMRetriever", "width": 1}, {"arrows": "to", "from": "Retriever", "to": "FAISSRetriever", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "YamlOutputParser", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "JsonOutputParser", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "ListOutputParser", "width": 1}, {"arrows": "to", "from": "OutputParser", "to": "BooleanOutputParser", "width": 1}, {"arrows": "to", "from": "Sampler", "to": "RandomSampler", "width": 1}, {"arrows": "to", "from": "Sampler", "to": "ClassSampler", "width": 1}, {"arrows": "to", "from": "Enum", "to": "DataClassFormatType", "width": 1}, {"arrows": "to", "from": "Enum", "to": "ModelType", "width": 1}, {"arrows": "to", "from": "Enum", "to": "DistanceToOperator", "width": 1}, {"arrows": "to", "from": "Enum", "to": "OptionalPackages", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "EmbedderOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "GeneratorOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "RetrieverOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "FunctionDefinition", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "Function", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "FunctionExpression", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "FunctionOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "StepOutput", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "Document", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "DialogTurn", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "Instruction", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "GeneratorStatesRecord", "width": 1}, {"arrows": "to", "from": "DataClass", "to": "GeneratorCallRecord", "width": 1}, {"arrows": "to", "from": "Optimizer", "to": "BootstrapFewShot", "width": 1}, {"arrows": "to", "from": "Optimizer", "to": "LLMOptimizer", "width": 1}]); nodeColors = {}; allNodes = nodes.get({ returnType: "Object" }); diff --git a/lightrag/README.md b/lightrag/README.md index 67e3bc99..8a3689af 100644 --- a/lightrag/README.md +++ b/lightrag/README.md @@ -1,7 +1,7 @@ ![LightRAG Logo](https://raw.githubusercontent.com/SylphAI-Inc/LightRAG/main/docs/source/_static/images/LightRAG-logo-doc.jpeg) -## ⚡⚡⚡ The PyTorch Library for Large language Model (LLM) Applications ⚡⚡⚡ +### ⚡⚡⚡ The PyTorch Library for Large language Model (LLM) Applications ⚡⚡⚡ *LightRAG* helps developers with both building and optimizing *Retriever-Agent-Generator (RAG)* pipelines. It is *light*, *modular*, and *robust*. diff --git a/lightrag/pyproject.toml b/lightrag/pyproject.toml index 81e530b1..6b1c608f 100644 --- a/lightrag/pyproject.toml +++ b/lightrag/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "lightrag" -version = "0.0.0-alpha.9" +version = "0.0.0-alpha.10" description = "The 'PyTorch' library for LLM applications. RAG=Retriever-Agent-Generator." authors = ["Li Yin "] readme = "README.md" diff --git a/test_pyvis.py b/test_pyvis.py deleted file mode 100644 index 39f72639..00000000 --- a/test_pyvis.py +++ /dev/null @@ -1,15 +0,0 @@ -from pyvis.network import Network -import networkx as nx - -# Create a simple NetworkX graph -G = nx.DiGraph() -G.add_edges_from([(1, 2), (2, 3), (3, 4)]) - -# Create a Pyvis Network -net = Network(notebook=False, width="100%", height="100%", directed=True) - -# Add nodes and edges from NetworkX to Pyvis -net.from_nx(G) - -# Save the network to an HTML file -net.show("test_network.html") diff --git a/visualize.py b/visualize.py index 971d6e65..cf865641 100644 --- a/visualize.py +++ b/visualize.py @@ -163,7 +163,7 @@ def process_directory(directory): # Directory containing your Python files def light_rag_paths(): - Light_rag_directory = "/Users/liyin/Documents/test/LightRAG/lightrag" + Light_rag_directory = "/Users/liyin/Documents/test/LightRAG/lightrag/lightrag" paths = ["core", "components", "utils", "eval", "optim", "tracing"] for path in paths: From 2962f280d9a95f758a402c6725744f4b4f8a2d89 Mon Sep 17 00:00:00 2001 From: Li Yin Date: Wed, 3 Jul 2024 14:21:14 -0700 Subject: [PATCH 2/7] minor update --- docs/source/_static/css/custom.css | 6 ++++++ docs/source/conf.py | 1 + 2 files changed, 7 insertions(+) diff --git a/docs/source/_static/css/custom.css b/docs/source/_static/css/custom.css index a97701dd..70018085 100644 --- a/docs/source/_static/css/custom.css +++ b/docs/source/_static/css/custom.css @@ -23,6 +23,12 @@ .pre { color: #0a7d91; /* Change the color of ```` blocks */ } +/* hide on this page */ +/* #pst-page-navigation-heading-2 { + display: none; +} */ + + /* .copyright { text-align: center; diff --git a/docs/source/conf.py b/docs/source/conf.py index d9d059b1..212e67d4 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -73,6 +73,7 @@ # a list of builtin themes. html_theme = "pydata_sphinx_theme" +html_show_sourcelink = False html_logo = "./_static/images/LightRAG-logo-doc.jpeg" From 0918c16c4e1907373f040d5425501c0adee81051 Mon Sep 17 00:00:00 2001 From: Li Yin Date: Wed, 3 Jul 2024 15:26:00 -0700 Subject: [PATCH 3/7] readme update --- README.md | 2 +- docs/source/developer_notes/class_hierarchy.rst | 2 +- lightrag/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5655a7f5..d93918e4 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ LightRAG full documentation available at [lightrag.sylph.ai](https://lightrag.sy - [Introduction](https://lightrag.sylph.ai/) - [Full installation guide](https://lightrag.sylph.ai/get_started/installation.html) - [Design philosophy](https://lightrag.sylph.ai/developer_notes/lightrag_design_philosophy.html): Design based on three principles: Simplicity over complexity, Quality over quantity, and Optimizing over building. -- [Class hierarchy](https://lightrag.sylph.ai/developer_notes/class_hierarchy.html): We have no more than two levels of subclasses. The bare minimum abstraction will developers with maximum customizability and simplicity. +- [Class hierarchy](https://lightrag.sylph.ai/developer_notes/class_hierarchy.html): We have no more than two levels of subclasses. The bare minimum abstraction provides developers with maximum customizability and simplicity. - [Tutorials](https://lightrag.sylph.ai/developer_notes/index.html): Learn the `why` and `how-to` (customize and integrate) behind each core part within the `LightRAG` library. - [API reference](https://lightrag.sylph.ai/apis/index.html) diff --git a/docs/source/developer_notes/class_hierarchy.rst b/docs/source/developer_notes/class_hierarchy.rst index 931d6e48..0636019b 100644 --- a/docs/source/developer_notes/class_hierarchy.rst +++ b/docs/source/developer_notes/class_hierarchy.rst @@ -1,6 +1,6 @@ Class Hierarchy ============================= -From the plot of the `LightRAG` library's class hierarchy, we can see the library is well-centered around two base classes: `Component` and `DataClass`, and it maintains a class inheritance hierarchy with no more than two levels. +From the plot of the `LightRAG` library's class hierarchy, we can see the library is well-centered around two powerful base classes: `Component` and `DataClass`, and it maintains no more than two levels of class hierarchy. This design philosophy results in a library with bare minimum abstraction, providing developers with maximum customizability. .. raw:: html diff --git a/lightrag/README.md b/lightrag/README.md index 8a3689af..cfae67d1 100644 --- a/lightrag/README.md +++ b/lightrag/README.md @@ -82,7 +82,7 @@ LightRAG full documentation available at [lightrag.sylph.ai](https://lightrag.sy - [Introduction](https://lightrag.sylph.ai/) - [Full installation guide](https://lightrag.sylph.ai/get_started/installation.html) - [Design philosophy](https://lightrag.sylph.ai/developer_notes/lightrag_design_philosophy.html): Design based on three principles: Simplicity over complexity, Quality over quantity, and Optimizing over building. -- [Class hierarchy](https://lightrag.sylph.ai/developer_notes/class_hierarchy.html): We have no more than two levels of subclasses. The bare minimum abstraction will developers with maximum customizability and simplicity. +- [Class hierarchy](https://lightrag.sylph.ai/developer_notes/class_hierarchy.html): We have no more than two levels of subclasses. The bare minimum abstraction provides developers with maximum customizability and simplicity. - [Tutorials](https://lightrag.sylph.ai/developer_notes/index.html): Learn the `why` and `how-to` (customize and integrate) behind each core part within the `LightRAG` library. - [API reference](https://lightrag.sylph.ai/apis/index.html) From eb6b5a88df921bbb64033cdc8402dd83aacadb80 Mon Sep 17 00:00:00 2001 From: Li Yin Date: Wed, 3 Jul 2024 22:12:22 -0700 Subject: [PATCH 4/7] improve api reference, fix the name change, remove the auto generate of summary in the conf and control it in the makefile so that we wont generate summary after its already fixed --- benchmarks/ReAct_agent/fever/fever.py | 14 +-- docs/Makefile | 15 +-- docs/source/_templates/package.rst_t | 23 ++-- .../_autosummary/components.agent.react.rst | 4 +- ...components.api_client.anthropic_client.rst | 22 ---- .../components.api_client.google_client.rst | 22 ---- .../components.api_client.groq_client.rst | 22 ---- .../components.api_client.openai_client.rst | 22 ---- ...ponents.api_client.transformers_client.rst | 29 ----- ...omponents.data_process.data_components.rst | 4 +- ...ponents.data_process.document_splitter.rst | 28 ----- .../components.data_process.text_splitter.rst | 4 +- .../_autosummary/components.memory.memory.rst | 4 +- ...mponents.model_client.anthropic_client.rst | 4 +- .../components.model_client.cohere_client.rst | 4 +- .../components.model_client.google_client.rst | 22 ---- .../components.model_client.groq_client.rst | 4 +- .../components.model_client.openai_client.rst | 4 +- ...nents.model_client.transformers_client.rst | 4 +- .../components.model_client.utils.rst | 4 +- .../components.output_parsers.outputs.rst | 4 +- .../components.reasoning.chain_of_thought.rst | 4 +- .../components.retriever.bm25_retriever.rst | 4 +- .../components.retriever.faiss_retriever.rst | 4 +- .../components.retriever.llm_retriever.rst | 4 +- ...omponents.retriever.postgres_retriever.rst | 23 ---- ...omponents.retriever.reranker_retriever.rst | 4 +- docs/source/apis/components/agent_prompt.rst | 71 ------------ .../apis/components/components.agent.rst | 16 +-- ...ponents.data_process.document_splitter.rst | 9 -- .../components/components.data_process.rst | 19 ++-- .../apis/components/components.memory.rst | 16 +-- .../components/components.model_client.rst | 24 ++--- .../components/components.output_parsers.rst | 18 ++-- .../apis/components/components.reasoning.rst | 16 +-- .../apis/components/components.retriever.rst | 20 +--- docs/source/apis/components/index.rst | 102 +++++++++++------- .../source/apis/core/core.base_data_class.rst | 2 +- .../source/apis/core/core.data_components.rst | 9 -- .../core/core.default_prompt_template.rst | 2 +- .../apis/core/core.document_splitter.rst | 9 -- docs/source/apis/core/core.func_tool.rst | 2 +- docs/source/apis/core/core.memory.rst | 9 -- docs/source/apis/core/core.model_client.rst | 2 +- docs/source/apis/core/core.prompt_builder.rst | 2 +- docs/source/apis/core/core.string_parser.rst | 2 +- docs/source/apis/core/core.tool_manager.rst | 2 +- docs/source/apis/core/index.rst | 83 ++++---------- .../apis/eval/eval.answer_match_acc.rst | 2 +- docs/source/apis/eval/eval.evaluators.rst | 2 +- docs/source/apis/eval/eval.llm_as_judge.rst | 2 +- .../apis/eval/eval.retriever_recall.rst | 2 +- .../apis/eval/eval.retriever_relevance.rst | 2 +- docs/source/apis/eval/index.rst | 4 +- .../apis/optim/optim.few_shot_optimizer.rst | 2 +- docs/source/apis/optim/optim.llm_augment.rst | 2 +- .../source/apis/optim/optim.llm_optimizer.rst | 2 +- docs/source/apis/tracing/index.rst | 10 +- .../tracing/tracing.generator_call_logger.rst | 2 +- .../tracing.generator_state_logger.rst | 2 +- docs/source/apis/utils/index.rst | 19 +--- docs/source/apis/utils/utils.file_io.rst | 2 +- docs/source/apis/utils/utils.lazy_import.rst | 2 +- docs/source/apis/utils/utils.setup_env.rst | 2 +- docs/source/change_api_file_name.py | 42 ++++++-- docs/source/conf.py | 74 ++----------- docs/source/remove_files.py | 5 +- lightrag/tests/_test_openai_client.py | 4 +- use_cases/tracing/trace_generator.py | 12 +-- 69 files changed, 263 insertions(+), 674 deletions(-) delete mode 100644 docs/source/apis/components/_autosummary/components.api_client.anthropic_client.rst delete mode 100644 docs/source/apis/components/_autosummary/components.api_client.google_client.rst delete mode 100644 docs/source/apis/components/_autosummary/components.api_client.groq_client.rst delete mode 100644 docs/source/apis/components/_autosummary/components.api_client.openai_client.rst delete mode 100644 docs/source/apis/components/_autosummary/components.api_client.transformers_client.rst delete mode 100644 docs/source/apis/components/_autosummary/components.data_process.document_splitter.rst delete mode 100644 docs/source/apis/components/_autosummary/components.model_client.google_client.rst delete mode 100644 docs/source/apis/components/_autosummary/components.retriever.postgres_retriever.rst delete mode 100644 docs/source/apis/components/agent_prompt.rst delete mode 100644 docs/source/apis/components/components.data_process.document_splitter.rst delete mode 100644 docs/source/apis/core/core.data_components.rst delete mode 100644 docs/source/apis/core/core.document_splitter.rst delete mode 100644 docs/source/apis/core/core.memory.rst diff --git a/benchmarks/ReAct_agent/fever/fever.py b/benchmarks/ReAct_agent/fever/fever.py index 4564b5ee..1b0867cf 100644 --- a/benchmarks/ReAct_agent/fever/fever.py +++ b/benchmarks/ReAct_agent/fever/fever.py @@ -7,13 +7,13 @@ """ import dotenv -from components.api_client.openai_client import OpenAIClient -from components.agent.react_agent import ReActAgent -from core.func_tool import FunctionTool -from components.api_client import GroqAPIClient +from lightrag.components.model_client.openai_client import OpenAIClient +from lightrag.components.agent.react import ReActAgent +from lightrag.core.func_tool import FunctionTool +from lightrag.components.model_client import GroqAPIClient import time from benchmarks.ReAct_agent.utils.tools import search, lookup, normalize_answer -from eval.evaluators import AnswerMacthEvaluator +from lightrag.eval.answer_match_acc import AnswerMatchAcc import logging import json from typing import List, Optional, Any, Dict @@ -229,8 +229,8 @@ def experiment( # setup evaluators -EM_evaluator = AnswerMacthEvaluator(type="exact_match") -FM_evaluator = AnswerMacthEvaluator(type="fuzzy_match") +EM_evaluator = AnswerMatchAcc(type="exact_match") +FM_evaluator = AnswerMatchAcc(type="fuzzy_match") # load test data file = open("./tests/benchmark/ReAct_agent/paper_data/paper_dev_10.json") diff --git a/docs/Makefile b/docs/Makefile index b327c069..c57fd100 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,12 +1,10 @@ # Minimal makefile for Sphinx documentation -# - # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SPHINXPROJ = LightRAG -SOURCEDIR = source# the source of output and conf.py +SOURCEDIR = source BUILDDIR = build APIDOCOUTDIR = $(SOURCEDIR)/apis @@ -28,6 +26,12 @@ apidoc: @sphinx-apidoc -o $(APIDOCOUTDIR)/optim ../lightrag/lightrag/optim --separate --force @sphinx-apidoc -o $(APIDOCOUTDIR)/utils ../lightrag/lightrag/utils --separate --force @sphinx-apidoc -o $(APIDOCOUTDIR)/tracing ../lightrag/lightrag/tracing --separate --force + +generate_autosummary: + @echo "Generating autosummary files" + @sphinx-autogen $(SOURCEDIR)/**/*.rst + +update_files: @echo "Inserting reference labels into RST files." @python $(SOURCEDIR)/insert_labels.py @echo "Removing unnecessary strings for better formatting" @@ -36,9 +40,6 @@ apidoc: @python $(SOURCEDIR)/remove_files.py @echo "Renaming and updating file" @python $(SOURCEDIR)/change_api_file_name.py - # @echo "Renaming and updating file" - # @python $(SOURCEDIR)/change_api_file_name_autosummary.py - -html: apidoc +html: apidoc generate_autosummary update_files @$(SPHINXBUILD) -b html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/source/_templates/package.rst_t b/docs/source/_templates/package.rst_t index 25c8aa34..ac3d87ad 100644 --- a/docs/source/_templates/package.rst_t +++ b/docs/source/_templates/package.rst_t @@ -23,10 +23,6 @@ .. py:module:: {{ pkgname }} {% endif %} -{%- if modulefirst and not is_namespace %} -{{ automodule(pkgname, automodule_options) }} -{% endif %} - {%- if subpackages %} Subpackages ----------- @@ -37,28 +33,21 @@ Subpackages {%- if submodules %} Submodules ---------- + .. autosummary:: :toctree: _autosummary {% for submodule in submodules %} {{ submodule }} {% endfor %} - -{% if separatemodules %} -{{ toctree(submodules) }} -{% else %} -{%- for submodule in submodules %} -{% if show_headings %} -{{- [submodule, "module"] | join(" ") | e | heading(2) }} -{% endif %} -{{ automodule(submodule, automodule_options) }} -{% endfor %} -{%- endif %} {%- endif %} -{%- if not modulefirst and not is_namespace %} +{%- if not is_namespace %} Module contents --------------- -{{ automodule(pkgname, automodule_options) }} +.. autosummary:: + :toctree: _autosummary + + {{ pkgname }} {% endif %} diff --git a/docs/source/apis/components/_autosummary/components.agent.react.rst b/docs/source/apis/components/_autosummary/components.agent.react.rst index 9c0d4e93..a2b2e5d6 100644 --- a/docs/source/apis/components/_autosummary/components.agent.react.rst +++ b/docs/source/apis/components/_autosummary/components.agent.react.rst @@ -1,4 +1,6 @@ -components.agent.react +.. _components-agent-react: + +react ====================== .. automodule:: components.agent.react diff --git a/docs/source/apis/components/_autosummary/components.api_client.anthropic_client.rst b/docs/source/apis/components/_autosummary/components.api_client.anthropic_client.rst deleted file mode 100644 index 31e030aa..00000000 --- a/docs/source/apis/components/_autosummary/components.api_client.anthropic_client.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _components-api_client-anthropic_client: - -components.api\_client.anthropic\_client -======================================== - -.. automodule:: components.api_client.anthropic_client - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - AnthropicAPIClient diff --git a/docs/source/apis/components/_autosummary/components.api_client.google_client.rst b/docs/source/apis/components/_autosummary/components.api_client.google_client.rst deleted file mode 100644 index 8da90bc6..00000000 --- a/docs/source/apis/components/_autosummary/components.api_client.google_client.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _components-api_client-google_client: - -components.api\_client.google\_client -===================================== - -.. automodule:: components.api_client.google_client - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - GoogleGenAIClient diff --git a/docs/source/apis/components/_autosummary/components.api_client.groq_client.rst b/docs/source/apis/components/_autosummary/components.api_client.groq_client.rst deleted file mode 100644 index ccaab3bd..00000000 --- a/docs/source/apis/components/_autosummary/components.api_client.groq_client.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _components-api_client-groq_client: - -components.api\_client.groq\_client -=================================== - -.. automodule:: components.api_client.groq_client - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - GroqAPIClient diff --git a/docs/source/apis/components/_autosummary/components.api_client.openai_client.rst b/docs/source/apis/components/_autosummary/components.api_client.openai_client.rst deleted file mode 100644 index 4c14edec..00000000 --- a/docs/source/apis/components/_autosummary/components.api_client.openai_client.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _components-api_client-openai_client: - -components.api\_client.openai\_client -===================================== - -.. automodule:: components.api_client.openai_client - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - OpenAIClient diff --git a/docs/source/apis/components/_autosummary/components.api_client.transformers_client.rst b/docs/source/apis/components/_autosummary/components.api_client.transformers_client.rst deleted file mode 100644 index 0398fa6f..00000000 --- a/docs/source/apis/components/_autosummary/components.api_client.transformers_client.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. _components-api_client-transformers_client: - -components.api\_client.transformers\_client -=========================================== - -.. automodule:: components.api_client.transformers_client - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - average_pool - - - - - - .. rubric:: Classes - - .. autosummary:: - - TransformerEmbedder - TransformersClient diff --git a/docs/source/apis/components/_autosummary/components.data_process.data_components.rst b/docs/source/apis/components/_autosummary/components.data_process.data_components.rst index 4482fe53..4ce6e0f7 100644 --- a/docs/source/apis/components/_autosummary/components.data_process.data_components.rst +++ b/docs/source/apis/components/_autosummary/components.data_process.data_components.rst @@ -1,4 +1,6 @@ -components.data\_process.data\_components +.. _components-data_process-data_components: + +data_components ========================================= .. automodule:: components.data_process.data_components diff --git a/docs/source/apis/components/_autosummary/components.data_process.document_splitter.rst b/docs/source/apis/components/_autosummary/components.data_process.document_splitter.rst deleted file mode 100644 index 205e73fc..00000000 --- a/docs/source/apis/components/_autosummary/components.data_process.document_splitter.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. _components-data_process-document_splitter: - -components.data\_process.document\_splitter -=========================================== - -.. automodule:: components.data_process.document_splitter - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - split_text_by_token_fn - - - - - - .. rubric:: Classes - - .. autosummary:: - - DocumentSplitter diff --git a/docs/source/apis/components/_autosummary/components.data_process.text_splitter.rst b/docs/source/apis/components/_autosummary/components.data_process.text_splitter.rst index 63a89e71..20b75323 100644 --- a/docs/source/apis/components/_autosummary/components.data_process.text_splitter.rst +++ b/docs/source/apis/components/_autosummary/components.data_process.text_splitter.rst @@ -1,4 +1,6 @@ -components.data\_process.text\_splitter +.. _components-data_process-text_splitter: + +text_splitter ======================================= .. automodule:: components.data_process.text_splitter diff --git a/docs/source/apis/components/_autosummary/components.memory.memory.rst b/docs/source/apis/components/_autosummary/components.memory.memory.rst index 0338de4d..7cbd4143 100644 --- a/docs/source/apis/components/_autosummary/components.memory.memory.rst +++ b/docs/source/apis/components/_autosummary/components.memory.memory.rst @@ -1,4 +1,6 @@ -components.memory.memory +.. _components-memory-memory: + +memory ======================== .. automodule:: components.memory.memory diff --git a/docs/source/apis/components/_autosummary/components.model_client.anthropic_client.rst b/docs/source/apis/components/_autosummary/components.model_client.anthropic_client.rst index 3c6b45a7..61c84d05 100644 --- a/docs/source/apis/components/_autosummary/components.model_client.anthropic_client.rst +++ b/docs/source/apis/components/_autosummary/components.model_client.anthropic_client.rst @@ -1,4 +1,6 @@ -components.model\_client.anthropic\_client +.. _components-model_client-anthropic_client: + +anthropic_client ========================================== .. automodule:: components.model_client.anthropic_client diff --git a/docs/source/apis/components/_autosummary/components.model_client.cohere_client.rst b/docs/source/apis/components/_autosummary/components.model_client.cohere_client.rst index 03c29e46..73263e7d 100644 --- a/docs/source/apis/components/_autosummary/components.model_client.cohere_client.rst +++ b/docs/source/apis/components/_autosummary/components.model_client.cohere_client.rst @@ -1,4 +1,6 @@ -components.model\_client.cohere\_client +.. _components-model_client-cohere_client: + +cohere_client ======================================= .. automodule:: components.model_client.cohere_client diff --git a/docs/source/apis/components/_autosummary/components.model_client.google_client.rst b/docs/source/apis/components/_autosummary/components.model_client.google_client.rst deleted file mode 100644 index 744dc3bc..00000000 --- a/docs/source/apis/components/_autosummary/components.model_client.google_client.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _components-model_client-google_client: - -components.model\_client.google\_client -======================================= - -.. automodule:: components.model_client.google_client - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - GoogleGenAIClient diff --git a/docs/source/apis/components/_autosummary/components.model_client.groq_client.rst b/docs/source/apis/components/_autosummary/components.model_client.groq_client.rst index 02650f40..789c0e73 100644 --- a/docs/source/apis/components/_autosummary/components.model_client.groq_client.rst +++ b/docs/source/apis/components/_autosummary/components.model_client.groq_client.rst @@ -1,4 +1,6 @@ -components.model\_client.groq\_client +.. _components-model_client-groq_client: + +groq_client ===================================== .. automodule:: components.model_client.groq_client diff --git a/docs/source/apis/components/_autosummary/components.model_client.openai_client.rst b/docs/source/apis/components/_autosummary/components.model_client.openai_client.rst index 9b8bc7e7..ae941be4 100644 --- a/docs/source/apis/components/_autosummary/components.model_client.openai_client.rst +++ b/docs/source/apis/components/_autosummary/components.model_client.openai_client.rst @@ -1,4 +1,6 @@ -components.model\_client.openai\_client +.. _components-model_client-openai_client: + +openai_client ======================================= .. automodule:: components.model_client.openai_client diff --git a/docs/source/apis/components/_autosummary/components.model_client.transformers_client.rst b/docs/source/apis/components/_autosummary/components.model_client.transformers_client.rst index cb1c9d33..6311637b 100644 --- a/docs/source/apis/components/_autosummary/components.model_client.transformers_client.rst +++ b/docs/source/apis/components/_autosummary/components.model_client.transformers_client.rst @@ -1,4 +1,6 @@ -components.model\_client.transformers\_client +.. _components-model_client-transformers_client: + +transformers_client ============================================= .. automodule:: components.model_client.transformers_client diff --git a/docs/source/apis/components/_autosummary/components.model_client.utils.rst b/docs/source/apis/components/_autosummary/components.model_client.utils.rst index 7d7f919e..55b7bb50 100644 --- a/docs/source/apis/components/_autosummary/components.model_client.utils.rst +++ b/docs/source/apis/components/_autosummary/components.model_client.utils.rst @@ -1,4 +1,6 @@ -components.model\_client.utils +.. _components-model_client-utils: + +utils ============================== .. automodule:: components.model_client.utils diff --git a/docs/source/apis/components/_autosummary/components.output_parsers.outputs.rst b/docs/source/apis/components/_autosummary/components.output_parsers.outputs.rst index 797976da..29de8634 100644 --- a/docs/source/apis/components/_autosummary/components.output_parsers.outputs.rst +++ b/docs/source/apis/components/_autosummary/components.output_parsers.outputs.rst @@ -1,4 +1,6 @@ -components.output\_parsers.outputs +.. _components-output_parsers-outputs: + +outputs ================================== .. automodule:: components.output_parsers.outputs diff --git a/docs/source/apis/components/_autosummary/components.reasoning.chain_of_thought.rst b/docs/source/apis/components/_autosummary/components.reasoning.chain_of_thought.rst index 665486a7..4ec1269c 100644 --- a/docs/source/apis/components/_autosummary/components.reasoning.chain_of_thought.rst +++ b/docs/source/apis/components/_autosummary/components.reasoning.chain_of_thought.rst @@ -1,4 +1,6 @@ -components.reasoning.chain\_of\_thought +.. _components-reasoning-chain_of_thought: + +chain_of_thought ======================================= .. automodule:: components.reasoning.chain_of_thought diff --git a/docs/source/apis/components/_autosummary/components.retriever.bm25_retriever.rst b/docs/source/apis/components/_autosummary/components.retriever.bm25_retriever.rst index 6f869f55..dcff5d44 100644 --- a/docs/source/apis/components/_autosummary/components.retriever.bm25_retriever.rst +++ b/docs/source/apis/components/_autosummary/components.retriever.bm25_retriever.rst @@ -1,4 +1,6 @@ -components.retriever.bm25\_retriever +.. _components-retriever-bm25_retriever: + +bm25_retriever ==================================== .. automodule:: components.retriever.bm25_retriever diff --git a/docs/source/apis/components/_autosummary/components.retriever.faiss_retriever.rst b/docs/source/apis/components/_autosummary/components.retriever.faiss_retriever.rst index cad15914..2f972f21 100644 --- a/docs/source/apis/components/_autosummary/components.retriever.faiss_retriever.rst +++ b/docs/source/apis/components/_autosummary/components.retriever.faiss_retriever.rst @@ -1,4 +1,6 @@ -components.retriever.faiss\_retriever +.. _components-retriever-faiss_retriever: + +faiss_retriever ===================================== .. automodule:: components.retriever.faiss_retriever diff --git a/docs/source/apis/components/_autosummary/components.retriever.llm_retriever.rst b/docs/source/apis/components/_autosummary/components.retriever.llm_retriever.rst index d8c9c6c6..b5acd12c 100644 --- a/docs/source/apis/components/_autosummary/components.retriever.llm_retriever.rst +++ b/docs/source/apis/components/_autosummary/components.retriever.llm_retriever.rst @@ -1,4 +1,6 @@ -components.retriever.llm\_retriever +.. _components-retriever-llm_retriever: + +llm_retriever =================================== .. automodule:: components.retriever.llm_retriever diff --git a/docs/source/apis/components/_autosummary/components.retriever.postgres_retriever.rst b/docs/source/apis/components/_autosummary/components.retriever.postgres_retriever.rst deleted file mode 100644 index 6a844203..00000000 --- a/docs/source/apis/components/_autosummary/components.retriever.postgres_retriever.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. _components-retriever-postgres_retriever: - -components.retriever.postgres\_retriever -======================================== - -.. automodule:: components.retriever.postgres_retriever - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - DistanceToOperator - PostgresRetriever diff --git a/docs/source/apis/components/_autosummary/components.retriever.reranker_retriever.rst b/docs/source/apis/components/_autosummary/components.retriever.reranker_retriever.rst index 3231d4a6..4acf28a7 100644 --- a/docs/source/apis/components/_autosummary/components.retriever.reranker_retriever.rst +++ b/docs/source/apis/components/_autosummary/components.retriever.reranker_retriever.rst @@ -1,4 +1,6 @@ -components.retriever.reranker\_retriever +.. _components-retriever-reranker_retriever: + +reranker_retriever ======================================== .. automodule:: components.retriever.reranker_retriever diff --git a/docs/source/apis/components/agent_prompt.rst b/docs/source/apis/components/agent_prompt.rst deleted file mode 100644 index 5432c912..00000000 --- a/docs/source/apis/components/agent_prompt.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _agent_prompt: - -.. _DEFAULT_REACT_AGENT_SYSTEM_PROMPT: - -DEFAULT_REACT_AGENT_SYSTEM_PROMPT ----------------------------------- - -This is the default prompt used by the system to interact with the agents. It contains the following structure: - -.. code-block:: python - - DEFAULT_REACT_AGENT_SYSTEM_PROMPT = r""" - {# role/task description #} - You task is to answer user's query with minimum steps and maximum accuracy using the tools provided. - {# REACT instructions #} - Each step you will read the previous Thought, Action, and Observation(execution result of the action)steps and then provide the next Thought and Action. - - You only have access to the following tools: - {# tools #} - {% for tool in tools %} - {{ loop.index }}. ToolName: {{ tool.metadata.name }} - Tool Description: {{ tool.metadata.description }} - Tool Parameters: {{ tool.metadata.fn_schema_str }} {#tool args can be misleading, especially if we already have type hints and docstring in the function#} - {% endfor %} - {# output is always more robust to use json than string #} - --- - Your output must be in valid JSON format(raw Python string format) with two keys: - { - "thought": "", - "action": "ToolName(, )" - } - - Must double quote the JSON str. - - Inside of the JSON str, Must use escape double quote and escape backslash for string. - For example: - "action": "finish(\"John's.\")" - --- - {# Specifications TODO: preference between the usage of llm tool vs the other tool #} - Process: - - Step 1: Read the user query and potentially divide it into subqueries. And get started with the first subquery. - - Call one available tool at a time to solve each subquery/subquestion. \ - - At step 'finish', join all subqueries answers and finish the task. - Remember: - - Action must call one of the above tools with Took Name. It can not be empty. - - Read the Tool Description and ensure your args and kwarg follow what each tool expects in types. e.g. (a=1, b=2) if it is keyword argument or (1, 2) if it is positional. - - You will always end with 'finish' action to finish the task. The answer can be the final answer or failure message. - - When the initial query is simple, use minimum steps to answer the query. - {#Examples can be here#} - {# Check if there are any examples #} - {% if examples %} - - {% for example in examples %} - {{ example }} - {% endfor %} - - {% endif %} - <> - ----------------- - {# History #} - {% for history in step_history %} - Step {{history.step}}: - { - "thought": "{{history.thought}}", - "action": "{{history.action}}", - } - "observation": "{{history.observation}}" - {% endfor %} - {% if input_str %} - User query: - {{ input_str }} - {% endif %} - """ \ No newline at end of file diff --git a/docs/source/apis/components/components.agent.rst b/docs/source/apis/components/components.agent.rst index fde2b8a2..e01df2a0 100644 --- a/docs/source/apis/components/components.agent.rst +++ b/docs/source/apis/components/components.agent.rst @@ -5,6 +5,7 @@ agent Submodules ---------- + .. autosummary:: :toctree: _autosummary @@ -12,16 +13,9 @@ Submodules components.agent.react - -.. toctree:: - :maxdepth: 4 - - components.agent.react - - --------------- -.. automodule:: components.agent - :members: - :undoc-members: - :show-inheritance: +.. autosummary:: + :toctree: _autosummary + + components.agent diff --git a/docs/source/apis/components/components.data_process.document_splitter.rst b/docs/source/apis/components/components.data_process.document_splitter.rst deleted file mode 100644 index 06832c3a..00000000 --- a/docs/source/apis/components/components.data_process.document_splitter.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. _components-data_process-document_splitter: - -document\_splitter -================================================== - -.. automodule:: components.data_process.document_splitter - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/apis/components/components.data_process.rst b/docs/source/apis/components/components.data_process.rst index 72ff7ae3..eb682fe5 100644 --- a/docs/source/apis/components/components.data_process.rst +++ b/docs/source/apis/components/components.data_process.rst @@ -1,10 +1,11 @@ .. _components-data_process: -data\_process +data_process ================================ Submodules ---------- + .. autosummary:: :toctree: _autosummary @@ -14,17 +15,9 @@ Submodules components.data_process.text_splitter - -.. toctree:: - :maxdepth: 4 - - components.data_process.data_components - components.data_process.text_splitter - - --------------- -.. automodule:: components.data_process - :members: - :undoc-members: - :show-inheritance: +.. autosummary:: + :toctree: _autosummary + + components.data_process diff --git a/docs/source/apis/components/components.memory.rst b/docs/source/apis/components/components.memory.rst index 68fef512..49e033f5 100644 --- a/docs/source/apis/components/components.memory.rst +++ b/docs/source/apis/components/components.memory.rst @@ -5,6 +5,7 @@ memory Submodules ---------- + .. autosummary:: :toctree: _autosummary @@ -12,16 +13,9 @@ Submodules components.memory.memory - -.. toctree:: - :maxdepth: 4 - - components.memory.memory - - --------------- -.. automodule:: components.memory - :members: - :undoc-members: - :show-inheritance: +.. autosummary:: + :toctree: _autosummary + + components.memory diff --git a/docs/source/apis/components/components.model_client.rst b/docs/source/apis/components/components.model_client.rst index 57c78622..3d78e592 100644 --- a/docs/source/apis/components/components.model_client.rst +++ b/docs/source/apis/components/components.model_client.rst @@ -1,10 +1,11 @@ .. _components-model_client: -model\_client +model_client ================================ Submodules ---------- + .. autosummary:: :toctree: _autosummary @@ -24,22 +25,9 @@ Submodules components.model_client.utils - -.. toctree:: - :maxdepth: 4 - - components.model_client.anthropic_client - components.model_client.cohere_client - components.model_client.google_client - components.model_client.groq_client - components.model_client.openai_client - components.model_client.transformers_client - components.model_client.utils - - --------------- -.. automodule:: components.model_client - :members: - :undoc-members: - :show-inheritance: +.. autosummary:: + :toctree: _autosummary + + components.model_client diff --git a/docs/source/apis/components/components.output_parsers.rst b/docs/source/apis/components/components.output_parsers.rst index 2810e80c..5151dd84 100644 --- a/docs/source/apis/components/components.output_parsers.rst +++ b/docs/source/apis/components/components.output_parsers.rst @@ -1,10 +1,11 @@ .. _components-output_parsers: -output\_parsers +output_parsers ================================== Submodules ---------- + .. autosummary:: :toctree: _autosummary @@ -12,16 +13,9 @@ Submodules components.output_parsers.outputs - -.. toctree:: - :maxdepth: 4 - - components.output_parsers.outputs - - --------------- -.. automodule:: components.output_parsers - :members: - :undoc-members: - :show-inheritance: +.. autosummary:: + :toctree: _autosummary + + components.output_parsers diff --git a/docs/source/apis/components/components.reasoning.rst b/docs/source/apis/components/components.reasoning.rst index b17e5112..b72251bf 100644 --- a/docs/source/apis/components/components.reasoning.rst +++ b/docs/source/apis/components/components.reasoning.rst @@ -5,6 +5,7 @@ reasoning Submodules ---------- + .. autosummary:: :toctree: _autosummary @@ -12,16 +13,9 @@ Submodules components.reasoning.chain_of_thought - -.. toctree:: - :maxdepth: 4 - - components.reasoning.chain_of_thought - - --------------- -.. automodule:: components.reasoning - :members: - :undoc-members: - :show-inheritance: +.. autosummary:: + :toctree: _autosummary + + components.reasoning diff --git a/docs/source/apis/components/components.retriever.rst b/docs/source/apis/components/components.retriever.rst index 27c507de..8b400846 100644 --- a/docs/source/apis/components/components.retriever.rst +++ b/docs/source/apis/components/components.retriever.rst @@ -5,6 +5,7 @@ retriever Submodules ---------- + .. autosummary:: :toctree: _autosummary @@ -20,20 +21,9 @@ Submodules components.retriever.reranker_retriever - -.. toctree:: - :maxdepth: 4 - - components.retriever.bm25_retriever - components.retriever.faiss_retriever - components.retriever.llm_retriever - components.retriever.postgres_retriever - components.retriever.reranker_retriever - - --------------- -.. automodule:: components.retriever - :members: - :undoc-members: - :show-inheritance: +.. autosummary:: + :toctree: _autosummary + + components.retriever diff --git a/docs/source/apis/components/index.rst b/docs/source/apis/components/index.rst index 24890fa4..2f414ef4 100644 --- a/docs/source/apis/components/index.rst +++ b/docs/source/apis/components/index.rst @@ -3,67 +3,89 @@ Components ============== -The components section of the LightRAG API documentation outlines the detailed specifications and functionalities of various API components. Each component plays a crucial role in the LightRAG framework, providing specialized capabilities and interactions. +.. The components section of the LightRAG API documentation outlines the detailed specifications and functionalities of various API components. Each component plays a crucial role in the LightRAG framework, providing specialized capabilities and interactions. + + +ModelClient +~~~~~~~~~~~~~~~~~~~~ -Overview ----------- .. autosummary:: + :toctree: None - components.agent - components.model_client - components.data_process - .. components.reasoning + components.model_client.groq_client + components.model_client.anthropic_client + components.model_client.openai_client + components.model_client.cohere_client + components.model_client.google_client + components.model_client.transformers_client - components.retriever - components.output_parsers +Retriever +~~~~~~~~~~~~~~~~~~~~ + +.. autosummary:: + :toctree: None + + components.retriever.bm25_retriever + components.retriever.faiss_retriever + components.retriever.llm_retriever + + components.retriever.postgres_retriever + + components.retriever.reranker_retriever Output Parsers --------------- -.. toctree:: - :maxdepth: 1 +~~~~~~~~~~~~~~~~~~~~ - components.output_parsers +.. autosummary:: + :toctree: None -Agents ------- -.. toctree:: - :maxdepth: 1 + components.output_parsers.outputs - components.agent +Agent +~~~~~~~~~~~~~~~~~~~~ -Model Clients ------------------ -.. toctree:: - :maxdepth: 1 +.. autosummary:: + :toctree: None - components.model_client + components.agent.react Data Process ----------------- -.. toctree:: - :maxdepth: 1 +~~~~~~~~~~~~~~~~~~~~ - components.data_process +.. autosummary:: + :toctree: None -.. Embedders -.. --------- -.. .. toctree:: -.. :maxdepth: 1 -.. components.embedder + components.data_process.text_splitter + + components.data_process.data_components + +Memory +~~~~~~~~~~~~~~~~~~~~ + +.. autosummary:: + :toctree: None -.. Reasoners -.. --------- -.. .. toctree:: -.. :maxdepth: 1 + components.memory.memory + +Reasoning + +.. autosummary:: + :toctree: None + + components.reasoning.chain_of_thought -.. components.reasoning -Retrievers ----------- .. toctree:: - :maxdepth: 1 + :maxdepth: 2 + :hidden: + components.model_client components.retriever + components.output_parsers + components.agent + components.data_process + components.reasoning + components.memory diff --git a/docs/source/apis/core/core.base_data_class.rst b/docs/source/apis/core/core.base_data_class.rst index 30fbfd14..6560da5b 100644 --- a/docs/source/apis/core/core.base_data_class.rst +++ b/docs/source/apis/core/core.base_data_class.rst @@ -1,6 +1,6 @@ .. _core-base_data_class: -base\_data\_class +base_data_class ============================= .. automodule:: core.base_data_class diff --git a/docs/source/apis/core/core.data_components.rst b/docs/source/apis/core/core.data_components.rst deleted file mode 100644 index f3deeb8a..00000000 --- a/docs/source/apis/core/core.data_components.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. _core-data_components: - -data\_components -============================ - -.. automodule:: core.data_components - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/apis/core/core.default_prompt_template.rst b/docs/source/apis/core/core.default_prompt_template.rst index 522ad037..7dc92b03 100644 --- a/docs/source/apis/core/core.default_prompt_template.rst +++ b/docs/source/apis/core/core.default_prompt_template.rst @@ -1,6 +1,6 @@ .. _core-default_prompt_template: -default\_prompt\_template +default_prompt_template ===================================== .. automodule:: core.default_prompt_template diff --git a/docs/source/apis/core/core.document_splitter.rst b/docs/source/apis/core/core.document_splitter.rst deleted file mode 100644 index 77672d83..00000000 --- a/docs/source/apis/core/core.document_splitter.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. _core-document_splitter: - -document\_splitter -============================== - -.. automodule:: core.document_splitter - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/apis/core/core.func_tool.rst b/docs/source/apis/core/core.func_tool.rst index f8ab69fc..90707294 100644 --- a/docs/source/apis/core/core.func_tool.rst +++ b/docs/source/apis/core/core.func_tool.rst @@ -1,6 +1,6 @@ .. _core-func_tool: -func\_tool +func_tool ====================== .. automodule:: core.func_tool diff --git a/docs/source/apis/core/core.memory.rst b/docs/source/apis/core/core.memory.rst deleted file mode 100644 index 00e3de26..00000000 --- a/docs/source/apis/core/core.memory.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. _core-memory: - -memory -================== - -.. automodule:: core.memory - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/source/apis/core/core.model_client.rst b/docs/source/apis/core/core.model_client.rst index 4a61fd5e..5029f6e6 100644 --- a/docs/source/apis/core/core.model_client.rst +++ b/docs/source/apis/core/core.model_client.rst @@ -1,6 +1,6 @@ .. _core-model_client: -model\_client +model_client ========================= .. automodule:: core.model_client diff --git a/docs/source/apis/core/core.prompt_builder.rst b/docs/source/apis/core/core.prompt_builder.rst index 26c80b01..8545afa9 100644 --- a/docs/source/apis/core/core.prompt_builder.rst +++ b/docs/source/apis/core/core.prompt_builder.rst @@ -1,6 +1,6 @@ .. _core-prompt_builder: -prompt\_builder +prompt_builder =========================== .. automodule:: core.prompt_builder diff --git a/docs/source/apis/core/core.string_parser.rst b/docs/source/apis/core/core.string_parser.rst index 14d2a06e..3553cd59 100644 --- a/docs/source/apis/core/core.string_parser.rst +++ b/docs/source/apis/core/core.string_parser.rst @@ -1,6 +1,6 @@ .. _core-string_parser: -string\_parser +string_parser ========================== .. automodule:: core.string_parser diff --git a/docs/source/apis/core/core.tool_manager.rst b/docs/source/apis/core/core.tool_manager.rst index 997401a8..501c3630 100644 --- a/docs/source/apis/core/core.tool_manager.rst +++ b/docs/source/apis/core/core.tool_manager.rst @@ -1,6 +1,6 @@ .. _core-tool_manager: -tool\_manager +tool_manager ========================= .. automodule:: core.tool_manager diff --git a/docs/source/apis/core/index.rst b/docs/source/apis/core/index.rst index c9f7399b..5a929d47 100644 --- a/docs/source/apis/core/index.rst +++ b/docs/source/apis/core/index.rst @@ -3,7 +3,10 @@ Core =================== -The core section of the LightRAG API documentation provides detailed information about the foundational components of the LightRAG system. These components are essential for the basic operations and serve as the building blocks for higher-level functionalities. +.. The core section of the LightRAG API documentation provides detailed information about the foundational components of the LightRAG system. These components are essential for the basic operations and serve as the building blocks for higher-level functionalities. + +Core building blocks for RAG and more advanced functionalities, such as agents. + Overview ---------- @@ -11,91 +14,41 @@ Overview core.base_data_class core.component - core.db core.default_prompt_template core.embedder - core.functional core.generator - core.memory core.model_client - core.parameter core.prompt_builder core.retriever core.string_parser - core.tokenizer core.func_tool core.tool_manager core.types + core.db + core.functional + core.parameter + core.tokenizer -Model Client ---------------- -.. toctree:: - :maxdepth: 1 - - core.model_client - -Component --------------- -.. toctree:: - :maxdepth: 1 - core.component -Data Handling -------------- .. toctree:: :maxdepth: 1 + :hidden: core.base_data_class - core.types - - core.db - -Prompts and Templates ---------------------- -.. toctree:: - :maxdepth: 1 - + core.component core.default_prompt_template - core.prompt_builder - -.. Document Processing -.. ------------------- -.. .. toctree:: -.. :maxdepth: 1 - - .. core.document_splitter - core.text_splitter - -Embedding and Retrieval ------------------------ -.. toctree:: - :maxdepth: 1 - core.embedder - core.retriever - -Generation and Utilities ------------------------- -.. toctree:: - :maxdepth: 1 - core.generator - core.functional - core.memory - ------------------------- -.. toctree:: - :maxdepth: 1 - + core.model_client + core.prompt_builder + core.retriever core.string_parser - core.tokenizer core.func_tool - -Parameters ------------------------- -.. toctree:: - :maxdepth: 1 - + core.tool_manager + core.types + core.db + core.functional core.parameter + core.tokenizer diff --git a/docs/source/apis/eval/eval.answer_match_acc.rst b/docs/source/apis/eval/eval.answer_match_acc.rst index b6a0e05b..8d16f6fe 100644 --- a/docs/source/apis/eval/eval.answer_match_acc.rst +++ b/docs/source/apis/eval/eval.answer_match_acc.rst @@ -1,6 +1,6 @@ .. _eval-answer_match_acc: -answer\_match\_acc +answer_match_acc ============================== .. automodule:: eval.answer_match_acc diff --git a/docs/source/apis/eval/eval.evaluators.rst b/docs/source/apis/eval/eval.evaluators.rst index ac0de161..76e0225b 100644 --- a/docs/source/apis/eval/eval.evaluators.rst +++ b/docs/source/apis/eval/eval.evaluators.rst @@ -1,4 +1,4 @@ -.. _eval-evaluators: +_eval-evaluators: evaluators ====================== diff --git a/docs/source/apis/eval/eval.llm_as_judge.rst b/docs/source/apis/eval/eval.llm_as_judge.rst index 77774ed3..1c4c426e 100644 --- a/docs/source/apis/eval/eval.llm_as_judge.rst +++ b/docs/source/apis/eval/eval.llm_as_judge.rst @@ -1,6 +1,6 @@ .. _eval-llm_as_judge: -llm\_as\_judge +llm_as_judge ========================== .. automodule:: eval.llm_as_judge diff --git a/docs/source/apis/eval/eval.retriever_recall.rst b/docs/source/apis/eval/eval.retriever_recall.rst index 1eade14a..c087d08f 100644 --- a/docs/source/apis/eval/eval.retriever_recall.rst +++ b/docs/source/apis/eval/eval.retriever_recall.rst @@ -1,6 +1,6 @@ .. _eval-retriever_recall: -retriever\_recall +retriever_recall ============================= .. automodule:: eval.retriever_recall diff --git a/docs/source/apis/eval/eval.retriever_relevance.rst b/docs/source/apis/eval/eval.retriever_relevance.rst index bd2c721b..c7af1274 100644 --- a/docs/source/apis/eval/eval.retriever_relevance.rst +++ b/docs/source/apis/eval/eval.retriever_relevance.rst @@ -1,6 +1,6 @@ .. _eval-retriever_relevance: -retriever\_relevance +retriever_relevance ================================ .. automodule:: eval.retriever_relevance diff --git a/docs/source/apis/eval/index.rst b/docs/source/apis/eval/index.rst index d3b09e39..afe06e45 100644 --- a/docs/source/apis/eval/index.rst +++ b/docs/source/apis/eval/index.rst @@ -12,10 +12,10 @@ Overview eval.retriever_relevance eval.llm_as_judge -Evaluator ----------- + .. toctree:: :maxdepth: 1 + :hidden: eval.answer_match_acc eval.retriever_recall diff --git a/docs/source/apis/optim/optim.few_shot_optimizer.rst b/docs/source/apis/optim/optim.few_shot_optimizer.rst index d411e628..18cc2e3e 100644 --- a/docs/source/apis/optim/optim.few_shot_optimizer.rst +++ b/docs/source/apis/optim/optim.few_shot_optimizer.rst @@ -1,6 +1,6 @@ .. _optim-few_shot_optimizer: -few\_shot\_optimizer +few_shot_optimizer ================================= .. automodule:: optim.few_shot_optimizer diff --git a/docs/source/apis/optim/optim.llm_augment.rst b/docs/source/apis/optim/optim.llm_augment.rst index 44ff64d7..f3626278 100644 --- a/docs/source/apis/optim/optim.llm_augment.rst +++ b/docs/source/apis/optim/optim.llm_augment.rst @@ -1,6 +1,6 @@ .. _optim-llm_augment: -llm\_augment +llm_augment ========================= .. automodule:: optim.llm_augment diff --git a/docs/source/apis/optim/optim.llm_optimizer.rst b/docs/source/apis/optim/optim.llm_optimizer.rst index 8c27727a..08ee2cc8 100644 --- a/docs/source/apis/optim/optim.llm_optimizer.rst +++ b/docs/source/apis/optim/optim.llm_optimizer.rst @@ -1,6 +1,6 @@ .. _optim-llm_optimizer: -llm\_optimizer +llm_optimizer =========================== .. automodule:: optim.llm_optimizer diff --git a/docs/source/apis/tracing/index.rst b/docs/source/apis/tracing/index.rst index 7a266ecd..13f7add5 100644 --- a/docs/source/apis/tracing/index.rst +++ b/docs/source/apis/tracing/index.rst @@ -11,17 +11,11 @@ Overview tracing.generator_state_logger tracing.generator_call_logger -Decorators --------------- -.. toctree:: - :maxdepth: 1 - tracing.decorators - -Loggers --------------- .. toctree:: :maxdepth: 1 + :hidden: + tracing.decorators tracing.generator_state_logger tracing.generator_call_logger diff --git a/docs/source/apis/tracing/tracing.generator_call_logger.rst b/docs/source/apis/tracing/tracing.generator_call_logger.rst index 80578c48..bb546cc4 100644 --- a/docs/source/apis/tracing/tracing.generator_call_logger.rst +++ b/docs/source/apis/tracing/tracing.generator_call_logger.rst @@ -1,6 +1,6 @@ .. _tracing-generator_call_logger: -generator\_call\_logger +generator_call_logger ====================================== .. automodule:: tracing.generator_call_logger diff --git a/docs/source/apis/tracing/tracing.generator_state_logger.rst b/docs/source/apis/tracing/tracing.generator_state_logger.rst index 4a2bfa34..e0f1caed 100644 --- a/docs/source/apis/tracing/tracing.generator_state_logger.rst +++ b/docs/source/apis/tracing/tracing.generator_state_logger.rst @@ -1,6 +1,6 @@ .. _tracing-generator_state_logger: -generator\_state\_logger +generator_state_logger ======================================= .. automodule:: tracing.generator_state_logger diff --git a/docs/source/apis/utils/index.rst b/docs/source/apis/utils/index.rst index fb339773..728a7338 100644 --- a/docs/source/apis/utils/index.rst +++ b/docs/source/apis/utils/index.rst @@ -12,24 +12,15 @@ Overview utils.config utils.registry utils.setup_env + utils.lazy_import -Logger --------- .. toctree:: :maxdepth: 1 + :hidden: utils.logger - -Serialization ----------------- -.. toctree:: - :maxdepth: 1 - utils.serialization - -Setup_env --------------- -.. toctree:: - :maxdepth: 1 - + utils.config + utils.registry utils.setup_env + utils.lazy_import diff --git a/docs/source/apis/utils/utils.file_io.rst b/docs/source/apis/utils/utils.file_io.rst index a6bd2610..1dfb7a95 100644 --- a/docs/source/apis/utils/utils.file_io.rst +++ b/docs/source/apis/utils/utils.file_io.rst @@ -1,6 +1,6 @@ .. _utils-file_io: -file\_io +file_io ===================== .. automodule:: utils.file_io diff --git a/docs/source/apis/utils/utils.lazy_import.rst b/docs/source/apis/utils/utils.lazy_import.rst index 309b4bc4..a443d548 100644 --- a/docs/source/apis/utils/utils.lazy_import.rst +++ b/docs/source/apis/utils/utils.lazy_import.rst @@ -1,6 +1,6 @@ .. _utils-lazy_import: -lazy\_import +lazy_import ========================= .. automodule:: utils.lazy_import diff --git a/docs/source/apis/utils/utils.setup_env.rst b/docs/source/apis/utils/utils.setup_env.rst index c4a7241a..25c8baa3 100644 --- a/docs/source/apis/utils/utils.setup_env.rst +++ b/docs/source/apis/utils/utils.setup_env.rst @@ -1,6 +1,6 @@ .. _utils-setup_env: -setup\_env +setup_env ======================= .. automodule:: utils.setup_env diff --git a/docs/source/change_api_file_name.py b/docs/source/change_api_file_name.py index a5e8ea4b..fedaa4f0 100644 --- a/docs/source/change_api_file_name.py +++ b/docs/source/change_api_file_name.py @@ -1,29 +1,49 @@ import os -import re + + +def remove_bom(s): + # Remove BOM if present + return s.encode().decode("utf-8-sig") + def update_file_content(directory: str): - module_name = directory.split("/")[-1] if "_autosummary" not in directory else "components" + module_name = ( + directory.split("/")[-1] if "_autosummary" not in directory else "components" + ) # print(f"directory: {directory}; module_name {module_name}") for filename in os.listdir(directory): # print(filename) if filename.endswith(".rst") and "index" not in filename: filepath = os.path.join(directory, filename) - # print(filepath) - with open(filepath, "r+", encoding='utf-8') as file: + print(filepath, module_name) + with open(filepath, "r+", encoding="utf-8") as file: lines = file.readlines() modified = False # To track if modifications have been made + if modified: + break for i in range(len(lines) - 1): - line = lines[i].strip() + line = remove_bom(lines[i].strip()) + # Replace escaped underscores with actual underscores + line = line.replace("\\_", "_") next_line = lines[i + 1].strip() - + # Check if the next line is a title underline if next_line == "=" * len(next_line) and not modified: + print(f"filepath: {filepath}") + print( + f"line: {repr(line)}, module_name: {repr(module_name)}, {line.startswith(module_name)}" + ) + # Check if the current line starts with the module_name if line.startswith(module_name): + print(f"here: {line}, ") # Replace the full module path with only the last segment - new_title = line.split('.')[-1] + new_title = line.split(".")[-1] # print(f"new_title: {new_title}") - lines[i] = new_title + '\n' # Update the title line + lines[i] = new_title + "\n" # Update the title line + print( + f"Updated title in {filepath}, lnew_title: {new_title}" + ) modified = True # Mark that modification has been made # No need to break since we are preserving the rest of the content @@ -32,8 +52,7 @@ def update_file_content(directory: str): file.seek(0) file.writelines(lines) file.truncate() # Ensure the file is cut off at the new end if it's shorter - print(f"Updated {filepath}") - + print(f"Updated {filepath} ") if __name__ == "__main__": @@ -41,6 +60,7 @@ def update_file_content(directory: str): directories = [ "./source/apis/core", "./source/apis/components", + "./source/apis/components/_autosummary", "./source/apis/utils", "./source/apis/eval", "./source/apis/tracing", @@ -48,4 +68,4 @@ def update_file_content(directory: str): # "./source/apis/components/_autosummary", ] for diretory in directories: - update_file_content(diretory) \ No newline at end of file + update_file_content(diretory) diff --git a/docs/source/conf.py b/docs/source/conf.py index 212e67d4..5e4734f3 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -1,38 +1,13 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# import os import sys - sys.path.insert(0, os.path.abspath("../../")) sys.path.insert(0, os.path.abspath("../../lightrag/lightrag")) -# # need to insert the paths -# for dir in os.walk('../../lightrag'): -# sys.path.insert(0, dir[0]) -# # print(dir[0]) - - -# -- Project information ----------------------------------------------------- project = "LightRAG" copyright = "2024, SylphAI, Inc" author = "SylphAI, Inc" -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. extensions = [ "sphinx.ext.autodoc", "sphinx.ext.autosummary", @@ -48,47 +23,26 @@ "sphinx_copybutton", "nbsphinx", "sphinx_search.extension", - # "myst_nb", - # "sphinx.builders.changes", - # 'recommonmark', - # 'myst_parser' ] html_show_sphinx = False - -# Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. exclude_patterns = ["lightrag/tests", "test_*", "../li_test"] -# exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '**.module.rst', '**/tests/*', '**/test_*.py', '*test.rst'] - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. - html_theme = "pydata_sphinx_theme" html_show_sourcelink = False - html_logo = "./_static/images/LightRAG-logo-doc.jpeg" -# These options are for the sphinx_rtd_theme html_theme_options = { "collapse_navigation": False, - # "sticky_navigation": True, # Ensures the sidebar stays at the top of the page - "navigation_depth": 8, # Controls how many headers are shown in the sidebar - # "includehidden": True, - # "titles_only": False, + "navigation_depth": 8, "icon_links": [ { "name": "GitHub", - "url": "https://github.com/SylphAI-Inc/LightRAG", # Replace with your GitHub URL + "url": "https://github.com/SylphAI-Inc/LightRAG", "icon": "fa-brands fa-github", }, { @@ -97,43 +51,29 @@ "icon": "fa-brands fa-discord", }, ], - # "navigation_with_keys": True } -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] # Only for CSS, JS, images, etc. +html_static_path = ["_static"] -# A shorter title for the navigation bar. Default is the same as html_title. html_short_title = "LightRAG" -# this will be the logo shown on the browser header html_favicon = "./_static/images/LightRAG-logo-circle.png" -# In Sphinx documentation, the configuration option add_module_names in the conf.py file controls -# whether module names are prefixed before object names in the documentation. This setting is particularly -# relevant when documenting Python modules and their contents, such as classes, functions, and methods. -autosummary_generate = True # Tells Sphinx to generate summary pages -autosummary_imported_members = False # Consider turning this off if not necessary +autosummary_generate = False +autosummary_imported_members = False add_module_names = False autosectionlabel_prefix_document = True autodoc_docstring_signature = True - autodoc_default_options = { "members": True, "undoc-members": True, "member-order": "bysource", "show-inheritance": True, - "private-members": False, # Ensure this is True if you want to document private members - # "special-members": "__init__", # Document special members like __init__ + "private-members": False, "inherited-members": False, "exclude-members": "__init__", - # "autosectionlabel_prefix_document": True, } def setup(app): - app.add_css_file( - "css/custom.css" - ) # Add custom CSS file to the Sphinx configuration + app.add_css_file("css/custom.css") diff --git a/docs/source/remove_files.py b/docs/source/remove_files.py index 38c362e8..08551a25 100644 --- a/docs/source/remove_files.py +++ b/docs/source/remove_files.py @@ -46,12 +46,11 @@ def remove_file(directory: str): "components.model_client.anthropic_client.rst", "components.output_parsers.outputs.rst", "components.model_client.cohere_client.rst", - "components.retriever.reranker_retriever.rst", + "components.retriever.reranker_retriever.rst", "components.data_process.data_components.rst", "components.data_process.text_splitter.rst", "components.memory.memory.rst", - "components.retriever.postgres_retriever.rst" - + "components.retriever.postgres_retriever.rst", ] try: for filename in os.listdir(directory): diff --git a/lightrag/tests/_test_openai_client.py b/lightrag/tests/_test_openai_client.py index 5754d978..10725aba 100644 --- a/lightrag/tests/_test_openai_client.py +++ b/lightrag/tests/_test_openai_client.py @@ -1,8 +1,8 @@ import unittest from unittest.mock import patch, AsyncMock -from lightrag.core.base_data_class import ModelType -from lightrag.components.api_client import OpenAIClient +from lightrag.core.types import ModelType +from lightrag.components.model_client import OpenAIClient def getenv_side_effect(key): diff --git a/use_cases/tracing/trace_generator.py b/use_cases/tracing/trace_generator.py index d4079658..98bab43f 100644 --- a/use_cases/tracing/trace_generator.py +++ b/use_cases/tracing/trace_generator.py @@ -1,10 +1,8 @@ -from core.generator import Generator -from core.component import Component +from lightrag.core.generator import Generator +from lightrag.core.component import Component -from components.api_client import GroqAPIClient -from tracing.decorators import trace_generator_states, trace_generator_call - -import utils.setup_env +from lightrag.components.model_client import GroqAPIClient +from lightrag.tracing.decorators import trace_generator_states, trace_generator_call @trace_generator_states() @@ -35,7 +33,7 @@ def call(self, query: str) -> str: if __name__ == "__main__": - from utils import enable_library_logging, get_logger + from lightrag.utils import enable_library_logging, get_logger enable_library_logging(enable_file=False, level="DEBUG") log = get_logger(__name__, level="INFO") From 71ad11b980e4744dd35f929fbb6a513a813b2590 Mon Sep 17 00:00:00 2001 From: Li Yin Date: Wed, 3 Jul 2024 23:14:47 -0700 Subject: [PATCH 5/7] fix the issue with empty example --- README.md | 138 +++++++++++++++--- developer_notes/__init__.py | 1 + developer_notes/generator_note.py | 73 +++++++-- docs/source/_templates/package.rst_t | 2 +- .../apis/components/components.agent.rst | 2 +- .../components/components.data_process.rst | 2 +- .../apis/components/components.memory.rst | 2 +- .../components/components.model_client.rst | 2 +- .../components/components.output_parsers.rst | 2 +- .../apis/components/components.reasoning.rst | 2 +- .../apis/components/components.retriever.rst | 2 +- lightrag/README.md | 7 +- .../components/output_parsers/outputs.py | 49 ++++--- 13 files changed, 218 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index d93918e4..895eee7c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ *LightRAG* helps developers with both building and optimizing *Retriever-Agent-Generator (RAG)* pipelines. It is *light*, *modular*, and *robust*. - + +## LightRAG Task Pipeline + -**LightRAG** +We will ask the model to response with ``explaination`` and ``example`` of a concept. And we built the pipeline to get the structured output as ``QAOutput``. ```python -from lightrag.core import Component, Generator -from lightrag.components.model_client import GroqAPIClient +from dataclasses import dataclass, field -class SimpleQA(Component): - def __init__(self): - super().__init__() - template = r""" - You are a helpful assistant. - - User: {{input_str}} - You: - """ - self.generator = Generator( +from lightrag.core import Component, Generator, fun_to_component +from lightrag.components.model_client import GroqAPIClient +from lightrag.core import DataClass, fun_to_component, Sequential +from lightrag.components.output_parsers import JsonOutputParser + +@dataclass +class QAOutput(DataClass): + explaination: str = field( + metadata={"desc": "A brief explaination of the concept in one sentence."} + ) + example: str = field(metadata={"desc": "An example of the concept in a sentence."}) + + +@fun_to_component +def to_qa_output(data: dict) -> QAOutput: + return QAOutput.from_dict(data) + + +class QA(Component): + def __init__(self): + super().__init__() + template = r""" + You are a helpful assistant. + + {{output_format_str}} + + + User: {{input_str}} + You: + """ + parser = JsonOutputParser(data_class=QAOutput) + self.generator = Generator( model_client=GroqAPIClient(), model_kwargs={"model": "llama3-8b-8192"}, template=template, + prompt_kwargs={"output_format_str": parser.format_instructions()}, + output_processors=Sequential(parser, to_qa_output), + ) + + def call(self, query: str): + return self.generator.call({"input_str": query}) + + async def acall(self, query: str): + return await self.generator.acall({"input_str": query}) +``` + + +Run the following code for visualization and calling the model. + +```python + +qa = QA() +print(qa) + +# call +output = qa("What is LLM?") +print(output) +``` + +**Structure of the pipeline** + +Here is what we get from ``print(qa)``: + +``` +QA( + (generator): Generator( + model_kwargs={'model': 'llama3-8b-8192'}, + (prompt): Prompt( + template: + You are a helpful assistant. + + {{output_format_str}} + + + User: {{input_str}} + You: + , prompt_kwargs: {'output_format_str': 'Your output should be formatted as a standard JSON instance with the following schema:\n```\n{\n "explaination": "A brief explaination of the concept in one sentence. (str) (required)",\n "example": "An example of the concept in a sentence. (str) (required)"\n}\n```\n-Make sure to always enclose the JSON output in triple backticks (```). Please do not add anything other than valid JSON output!\n-Use double quotes for the keys and string values.\n-Follow the JSON formatting conventions.'}, prompt_variables: ['output_format_str', 'input_str'] + ) + (model_client): GroqAPIClient() + (output_processors): Sequential( + (0): JsonOutputParser( + data_class=QAOutput, examples=None, exclude_fields=None + (json_output_format_prompt): Prompt( + template: Your output should be formatted as a standard JSON instance with the following schema: + ``` + {{schema}} + ``` + {% if example %} + Examples: + ``` + {{example}} + ``` + {% endif %} + -Make sure to always enclose the JSON output in triple backticks (```). Please do not add anything other than valid JSON output! + -Use double quotes for the keys and string values. + -Follow the JSON formatting conventions., prompt_variables: ['schema', 'example'] + ) + (output_processors): JsonParser() ) + (1): ToQaOutputComponent(fun_name=to_qa_output) + ) + ) +) +``` - def call(self, query): - return self.generator({"input_str": query}) +**The output** - async def acall(self, query): - return await self.generator.acall({"input_str": query}) +Here is what we get from ``print(output)``: + +``` +GeneratorOutput(data=QAOutput(explaination='LLM stands for Large Language Model, which refers to a type of artificial intelligence designed to process and generate human-like language.', example='For example, a LLM can be trained to generate news articles, conversations, or even entire books, and can be used for a variety of applications such as language translation, text summarization, and chatbots.'), error=None, usage=None, raw_response='```\n{\n "explaination": "LLM stands for Large Language Model, which refers to a type of artificial intelligence designed to process and generate human-like language.",\n "example": "For example, a LLM can be trained to generate news articles, conversations, or even entire books, and can be used for a variety of applications such as language translation, text summarization, and chatbots."\n}', metadata=None) ``` + ## Quick Install Install LightRAG with pip: @@ -95,11 +188,12 @@ LightRAG full documentation available at [lightrag.sylph.ai](https://lightrag.sy # Citation ```bibtex -@software{Yin-LightRAG-2024, - author = {Yin, Li}, - title = {{LightRAG: The PyTorch Library for Large language Model (LLM) Applications}}, +@software{Yin2024LightRAG, + author = {Li Yin}, + title = {{LightRAG: The PyTorch Library for Large Language Model (LLM) Applications}}, month = {7}, year = {2024}, + doi = {10.5281/zenodo.12639531}, url = {https://github.com/SylphAI-Inc/LightRAG} } ``` diff --git a/developer_notes/__init__.py b/developer_notes/__init__.py index d33bab7c..d4d88633 100644 --- a/developer_notes/__init__.py +++ b/developer_notes/__init__.py @@ -1,3 +1,4 @@ from lightrag.utils import setup_env +print("initiating setup_env()...") setup_env() diff --git a/developer_notes/generator_note.py b/developer_notes/generator_note.py index 2fa89251..5cc28339 100644 --- a/developer_notes/generator_note.py +++ b/developer_notes/generator_note.py @@ -1,5 +1,12 @@ +from dataclasses import dataclass, field + from lightrag.core import Component, Generator from lightrag.components.model_client import GroqAPIClient +from lightrag.core import DataClass, fun_to_component, Sequential +from lightrag.components.output_parsers import JsonOutputParser +from lightrag.utils import setup_env + +setup_env() class SimpleQA(Component): @@ -24,6 +31,47 @@ async def acall(self, query): return await self.generator.acall({"input_str": query}) +@dataclass +class QAOutput(DataClass): + explaination: str = field( + metadata={"desc": "A brief explaination of the concept in one sentence."} + ) + example: str = field(metadata={"desc": "An example of the concept in a sentence."}) + + +@fun_to_component +def to_qa_output(data: dict) -> QAOutput: + return QAOutput.from_dict(data) + + +class QA(Component): + def __init__(self): + super().__init__() + template = r""" + You are a helpful assistant. + + {{output_format_str}} + + + User: {{input_str}} + You: + """ + parser = JsonOutputParser(data_class=QAOutput) + self.generator = Generator( + model_client=GroqAPIClient(), + model_kwargs={"model": "llama3-8b-8192"}, + template=template, + prompt_kwargs={"output_format_str": parser.format_instructions()}, + output_processors=Sequential(parser, to_qa_output), + ) + + def call(self, query: str): + return self.generator.call({"input_str": query}) + + async def acall(self, query: str): + return await self.generator.acall({"input_str": query}) + + def minimum_generator(): from lightrag.core import Generator from lightrag.components.model_client import GroqAPIClient @@ -169,13 +217,18 @@ def create_purely_from_config_2(): if __name__ == "__main__": - qa = SimpleQA() - answer = qa("What is LightRAG?") - print(qa) - - minimum_generator() - use_a_json_parser() - use_its_own_template() - use_model_client_enum_to_switch_client() - create_purely_from_config() - create_purely_from_config_2() + qa1 = SimpleQA() + answer = qa1("What is LightRAG?") + print(qa1) + + qa2 = QA() + answer = qa2("What is LLM?") + print(qa2) + print(answer) + + # minimum_generator() + # use_a_json_parser() + # use_its_own_template() + # use_model_client_enum_to_switch_client() + # create_purely_from_config() + # create_purely_from_config_2() diff --git a/docs/source/_templates/package.rst_t b/docs/source/_templates/package.rst_t index ac3d87ad..5e1bbdc4 100644 --- a/docs/source/_templates/package.rst_t +++ b/docs/source/_templates/package.rst_t @@ -31,7 +31,7 @@ Subpackages {% endif %} {%- if submodules %} -Submodules +Overview ---------- .. autosummary:: diff --git a/docs/source/apis/components/components.agent.rst b/docs/source/apis/components/components.agent.rst index e01df2a0..9e2fdcc7 100644 --- a/docs/source/apis/components/components.agent.rst +++ b/docs/source/apis/components/components.agent.rst @@ -3,7 +3,7 @@ agent ======================== -Submodules +Overview ---------- .. autosummary:: diff --git a/docs/source/apis/components/components.data_process.rst b/docs/source/apis/components/components.data_process.rst index eb682fe5..19875935 100644 --- a/docs/source/apis/components/components.data_process.rst +++ b/docs/source/apis/components/components.data_process.rst @@ -3,7 +3,7 @@ data_process ================================ -Submodules +Overview ---------- .. autosummary:: diff --git a/docs/source/apis/components/components.memory.rst b/docs/source/apis/components/components.memory.rst index 49e033f5..4849cae4 100644 --- a/docs/source/apis/components/components.memory.rst +++ b/docs/source/apis/components/components.memory.rst @@ -3,7 +3,7 @@ memory ========================= -Submodules +Overview ---------- .. autosummary:: diff --git a/docs/source/apis/components/components.model_client.rst b/docs/source/apis/components/components.model_client.rst index 3d78e592..02644f25 100644 --- a/docs/source/apis/components/components.model_client.rst +++ b/docs/source/apis/components/components.model_client.rst @@ -3,7 +3,7 @@ model_client ================================ -Submodules +Overview ---------- .. autosummary:: diff --git a/docs/source/apis/components/components.output_parsers.rst b/docs/source/apis/components/components.output_parsers.rst index 5151dd84..12240889 100644 --- a/docs/source/apis/components/components.output_parsers.rst +++ b/docs/source/apis/components/components.output_parsers.rst @@ -3,7 +3,7 @@ output_parsers ================================== -Submodules +Overview ---------- .. autosummary:: diff --git a/docs/source/apis/components/components.reasoning.rst b/docs/source/apis/components/components.reasoning.rst index b72251bf..d53839c9 100644 --- a/docs/source/apis/components/components.reasoning.rst +++ b/docs/source/apis/components/components.reasoning.rst @@ -3,7 +3,7 @@ reasoning ============================ -Submodules +Overview ---------- .. autosummary:: diff --git a/docs/source/apis/components/components.retriever.rst b/docs/source/apis/components/components.retriever.rst index 8b400846..58e64386 100644 --- a/docs/source/apis/components/components.retriever.rst +++ b/docs/source/apis/components/components.retriever.rst @@ -3,7 +3,7 @@ retriever ============================ -Submodules +Overview ---------- .. autosummary:: diff --git a/lightrag/README.md b/lightrag/README.md index cfae67d1..34c22a5e 100644 --- a/lightrag/README.md +++ b/lightrag/README.md @@ -95,11 +95,12 @@ LightRAG full documentation available at [lightrag.sylph.ai](https://lightrag.sy # Citation ```bibtex -@software{Yin-LightRAG-2024, - author = {Yin, Li}, - title = {{LightRAG: The PyTorch Library for Large language Model (LLM) Applications}}, +@software{Yin2024LightRAG, + author = {Li Yin}, + title = {{LightRAG: The PyTorch Library for Large Language Model (LLM) Applications}}, month = {7}, year = {2024}, + doi = {10.5281/zenodo.12639531}, url = {https://github.com/SylphAI-Inc/LightRAG} } ``` diff --git a/lightrag/lightrag/components/output_parsers/outputs.py b/lightrag/lightrag/components/output_parsers/outputs.py index af5b4f51..da6e583b 100644 --- a/lightrag/lightrag/components/output_parsers/outputs.py +++ b/lightrag/lightrag/components/output_parsers/outputs.py @@ -171,17 +171,19 @@ def format_instructions( # convert example to string, convert data class to yaml string example_str = "" try: - for example in self.examples: - per_example_str = example.format_example_str( - format_type=DataClassFormatType.EXAMPLE_YAML, - exclude=self._exclude_fields, - ) - example_str += f"{per_example_str}\n________\n" - # remove the last new line - example_str = example_str[:-1] - log.debug(f"{__class__.__name__} example_str: {example_str}") - - except Exception: + if self.examples and len(self.examples) > 0: + for example in self.examples: + per_example_str = example.format_example_str( + format_type=DataClassFormatType.EXAMPLE_YAML, + exclude=self._exclude_fields, + ) + example_str += f"{per_example_str}\n________\n" + # remove the last new line + example_str = example_str[:-1] + log.debug(f"{__class__.__name__} example_str: {example_str}") + + except Exception as e: + log.error(f"Error in formatting example for {__class__.__name__}, {e}") example_str = None return self.yaml_output_format_prompt(schema=schema, example=example_str) @@ -240,18 +242,19 @@ def format_instructions( ) example_str = "" try: - for example in self.examples: - per_example_str = example.format_example_str( - format_type=DataClassFormatType.EXAMPLE_JSON, - exclude=self._exclude_fields, - ) - example_str += f"{per_example_str}\n________\n" - # remove the last new line - example_str = example_str[:-1] - log.debug(f"{__class__.__name__} example_str: {example_str}") - - except Exception: - log.error(f"Error in formatting example for {__class__.__name__}") + if self.examples and len(self.examples) > 0: + for example in self.examples: + per_example_str = example.format_example_str( + format_type=DataClassFormatType.EXAMPLE_JSON, + exclude=self._exclude_fields, + ) + example_str += f"{per_example_str}\n________\n" + # remove the last new line + example_str = example_str[:-1] + log.debug(f"{__class__.__name__} example_str: {example_str}") + + except Exception as e: + log.error(f"Error in formatting example for {__class__.__name__}, {e}") example_str = None return self.json_output_format_prompt(schema=schema, example=example_str) From f5ca789baaaa54f79a346a5be3dd55abbec1f630 Mon Sep 17 00:00:00 2001 From: Li Yin Date: Wed, 3 Jul 2024 23:36:54 -0700 Subject: [PATCH 6/7] update root readme --- README.md | 54 ++++++++++++++++++++++++------- developer_notes/generator_note.py | 25 +++++++------- lightrag/pyproject.toml | 2 +- 3 files changed, 58 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 895eee7c..bc8067ad 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![LightRAG Logo](https://raw.githubusercontent.com/SylphAI-Inc/LightRAG/main/docs/source/_static/images/LightRAG-logo-doc.jpeg) -### ⚡⚡⚡ The PyTorch Library for Large language Model (LLM) Applications ⚡⚡⚡ +### ⚡ The PyTorch Library for Large language Model (LLM) Applications ⚡ *LightRAG* helps developers with both building and optimizing *Retriever-Agent-Generator (RAG)* pipelines. It is *light*, *modular*, and *robust*. @@ -34,15 +34,14 @@ class Net(nn.Module): ## LightRAG Task Pipeline -We will ask the model to response with ``explaination`` and ``example`` of a concept. And we built the pipeline to get the structured output as ``QAOutput``. +We will ask the model to respond with ``explaination`` and ``example`` of a concept. And we will build a pipeline to get the structured output as ``QAOutput``. ```python from dataclasses import dataclass, field -from lightrag.core import Component, Generator, fun_to_component +from lightrag.core import Component, Generator, DataClass, fun_to_component, Sequential from lightrag.components.model_client import GroqAPIClient -from lightrag.core import DataClass, fun_to_component, Sequential from lightrag.components.output_parsers import JsonOutputParser @dataclass @@ -62,13 +61,13 @@ class QA(Component): def __init__(self): super().__init__() template = r""" - You are a helpful assistant. - - {{output_format_str}} - - - User: {{input_str}} - You: +You are a helpful assistant. + +{{output_format_str}} + + +User: {{input_str}} +You: """ parser = JsonOutputParser(data_class=QAOutput) self.generator = Generator( @@ -152,6 +151,39 @@ Here is what we get from ``print(output)``: ``` GeneratorOutput(data=QAOutput(explaination='LLM stands for Large Language Model, which refers to a type of artificial intelligence designed to process and generate human-like language.', example='For example, a LLM can be trained to generate news articles, conversations, or even entire books, and can be used for a variety of applications such as language translation, text summarization, and chatbots.'), error=None, usage=None, raw_response='```\n{\n "explaination": "LLM stands for Large Language Model, which refers to a type of artificial intelligence designed to process and generate human-like language.",\n "example": "For example, a LLM can be trained to generate news articles, conversations, or even entire books, and can be used for a variety of applications such as language translation, text summarization, and chatbots."\n}', metadata=None) ``` +**See the prompt** + +Use the following code: + +```python + +qa2.generator.print_prompt( + output_format_str=qa2.generator.output_processors[0].format_instructions(), + input_str="What is LLM?", +) +``` + + +The output will be: + +``` +You are a helpful assistant. + +Your output should be formatted as a standard JSON instance with the following schema: +``` +{ + "explaination": "A brief explaination of the concept in one sentence. (str) (required)", + "example": "An example of the concept in a sentence. (str) (required)" +} +``` +-Make sure to always enclose the JSON output in triple backticks (```). Please do not add anything other than valid JSON output! +-Use double quotes for the keys and string values. +-Follow the JSON formatting conventions. + + +User: What is LLM? +You: +``` ## Quick Install diff --git a/developer_notes/generator_note.py b/developer_notes/generator_note.py index 5cc28339..f7a57f2e 100644 --- a/developer_notes/generator_note.py +++ b/developer_notes/generator_note.py @@ -1,8 +1,7 @@ from dataclasses import dataclass, field -from lightrag.core import Component, Generator +from lightrag.core import Component, Generator, DataClass, fun_to_component, Sequential from lightrag.components.model_client import GroqAPIClient -from lightrag.core import DataClass, fun_to_component, Sequential from lightrag.components.output_parsers import JsonOutputParser from lightrag.utils import setup_env @@ -48,13 +47,13 @@ class QA(Component): def __init__(self): super().__init__() template = r""" - You are a helpful assistant. - - {{output_format_str}} - - - User: {{input_str}} - You: +You are a helpful assistant. + +{{output_format_str}} + + +User: {{input_str}} +You: """ parser = JsonOutputParser(data_class=QAOutput) self.generator = Generator( @@ -123,8 +122,8 @@ def use_its_own_template(): from lightrag.components.model_client import GroqAPIClient template = r"""{{task_desc_str}} - User: {{input_str}} - You:""" +User: {{input_str}} +You:""" generator = Generator( model_client=GroqAPIClient(), model_kwargs={"model": "llama3-8b-8192"}, @@ -225,6 +224,10 @@ def create_purely_from_config_2(): answer = qa2("What is LLM?") print(qa2) print(answer) + qa2.generator.print_prompt( + output_format_str=qa2.generator.output_processors[0].format_instructions(), + input_str="What is LLM?", + ) # minimum_generator() # use_a_json_parser() diff --git a/lightrag/pyproject.toml b/lightrag/pyproject.toml index 6b1c608f..6226b0e4 100644 --- a/lightrag/pyproject.toml +++ b/lightrag/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "lightrag" -version = "0.0.0-alpha.10" +version = "0.0.0-alpha.11" description = "The 'PyTorch' library for LLM applications. RAG=Retriever-Agent-Generator." authors = ["Li Yin "] readme = "README.md" From e4f965072d2b8ab7ca6efb425ef4c5cbc5444bbc Mon Sep 17 00:00:00 2001 From: Brandon Phillips Date: Thu, 4 Jul 2024 07:54:09 -0600 Subject: [PATCH 7/7] modified preset_prompt_kwargs to prompt_kwargs --- use_cases/simple_qa_anthropic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/use_cases/simple_qa_anthropic.py b/use_cases/simple_qa_anthropic.py index 63273354..0c2dc8a2 100644 --- a/use_cases/simple_qa_anthropic.py +++ b/use_cases/simple_qa_anthropic.py @@ -14,7 +14,7 @@ def __init__(self): self.generator = Generator( model_client=AnthropicAPIClient(), model_kwargs={"model": "claude-3-opus-20240229", "max_tokens": 1000}, - preset_prompt_kwargs={ + prompt_kwargs={ "task_desc_str": "You are a helpful assistant and with a great sense of humor." }, )