Merge branch 'main' of https://github.com/jin38324/LightRAG
This commit is contained in:
19
README.md
19
README.md
@@ -1,7 +1,7 @@
|
|||||||
<center><h2>🚀 LightRAG: Simple and Fast Retrieval-Augmented Generation</h2></center>
|
<center><h2>🚀 LightRAG: Simple and Fast Retrieval-Augmented Generation</h2></center>
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
<div align='center'>
|
<div align='center'>
|
||||||
<p>
|
<p>
|
||||||
@@ -18,11 +18,12 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
This repository hosts the code of LightRAG. The structure of this code is based on [nano-graphrag](https://github.com/gusye1234/nano-graphrag).
|
This repository hosts the code of LightRAG. The structure of this code is based on [nano-graphrag](https://github.com/gusye1234/nano-graphrag).
|
||||||

|

|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## 🎉 News
|
## 🎉 News
|
||||||
- [x] [2024.11.08]🎯📢You can [use Oracle Database 23ai for all storage types (kv/vector/graph)](https://github.com/HKUDS/LightRAG/blob/main/examples/lightrag_oracle_demo.py) now.
|
- [x] [2024.11.11]🎯📢You can [use Oracle Database 23ai for all storage types (kv/vector/graph)](https://github.com/HKUDS/LightRAG/blob/main/examples/lightrag_oracle_demo.py) now.
|
||||||
|
- [x] [2024.11.09]🎯📢Now comes [LightRAG Gui](https://lightrag-gui.streamlit.app) that lets you insert, query, visualize, and download LightRAG knowledge.
|
||||||
- [x] [2024.11.04]🎯📢You can [use Neo4J for Storage](https://github.com/HKUDS/LightRAG?tab=readme-ov-file#using-neo4j-for-storage) now.
|
- [x] [2024.11.04]🎯📢You can [use Neo4J for Storage](https://github.com/HKUDS/LightRAG?tab=readme-ov-file#using-neo4j-for-storage) now.
|
||||||
- [x] [2024.10.29]🎯📢LightRAG now supports multiple file types, including PDF, DOC, PPT, and CSV via `textract`.
|
- [x] [2024.10.29]🎯📢LightRAG now supports multiple file types, including PDF, DOC, PPT, and CSV via `textract`.
|
||||||
- [x] [2024.10.20]🎯📢We’ve added a new feature to LightRAG: Graph Visualization.
|
- [x] [2024.10.20]🎯📢We’ve added a new feature to LightRAG: Graph Visualization.
|
||||||
@@ -143,6 +144,7 @@ rag = LightRAG(
|
|||||||
```python
|
```python
|
||||||
from lightrag.llm import hf_model_complete, hf_embedding
|
from lightrag.llm import hf_model_complete, hf_embedding
|
||||||
from transformers import AutoModel, AutoTokenizer
|
from transformers import AutoModel, AutoTokenizer
|
||||||
|
from lightrag.utils import EmbeddingFunc
|
||||||
|
|
||||||
# Initialize LightRAG with Hugging Face model
|
# Initialize LightRAG with Hugging Face model
|
||||||
rag = LightRAG(
|
rag = LightRAG(
|
||||||
@@ -173,6 +175,7 @@ Then you only need to set LightRAG as follows:
|
|||||||
|
|
||||||
```python
|
```python
|
||||||
from lightrag.llm import ollama_model_complete, ollama_embedding
|
from lightrag.llm import ollama_model_complete, ollama_embedding
|
||||||
|
from lightrag.utils import EmbeddingFunc
|
||||||
|
|
||||||
# Initialize LightRAG with Ollama model
|
# Initialize LightRAG with Ollama model
|
||||||
rag = LightRAG(
|
rag = LightRAG(
|
||||||
@@ -867,6 +870,9 @@ def extract_queries(file_path):
|
|||||||
│ ├── lightrag_siliconcloud_demo.py
|
│ ├── lightrag_siliconcloud_demo.py
|
||||||
│ └── vram_management_demo.py
|
│ └── vram_management_demo.py
|
||||||
├── lightrag
|
├── lightrag
|
||||||
|
│ ├── kg
|
||||||
|
│ │ ├── __init__.py
|
||||||
|
│ │ └── neo4j_impl.py
|
||||||
│ ├── __init__.py
|
│ ├── __init__.py
|
||||||
│ ├── base.py
|
│ ├── base.py
|
||||||
│ ├── lightrag.py
|
│ ├── lightrag.py
|
||||||
@@ -884,10 +890,14 @@ def extract_queries(file_path):
|
|||||||
│ └── Step_3.py
|
│ └── Step_3.py
|
||||||
├── .gitignore
|
├── .gitignore
|
||||||
├── .pre-commit-config.yaml
|
├── .pre-commit-config.yaml
|
||||||
|
├── Dockerfile
|
||||||
|
├── get_all_edges_nx.py
|
||||||
├── LICENSE
|
├── LICENSE
|
||||||
├── README.md
|
├── README.md
|
||||||
├── requirements.txt
|
├── requirements.txt
|
||||||
└── setup.py
|
├── setup.py
|
||||||
|
├── test_neo4j.py
|
||||||
|
└── test.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## Star History
|
## Star History
|
||||||
@@ -921,4 +931,3 @@ primaryClass={cs.IR}
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
**Thank you for your interest in our work!**
|
**Thank you for your interest in our work!**
|
||||||
|
|
||||||
|
@@ -66,9 +66,11 @@ async def get_embedding_dim():
|
|||||||
rag = LightRAG(
|
rag = LightRAG(
|
||||||
working_dir=WORKING_DIR,
|
working_dir=WORKING_DIR,
|
||||||
llm_model_func=llm_model_func,
|
llm_model_func=llm_model_func,
|
||||||
embedding_func=EmbeddingFunc(embedding_dim=asyncio.run(get_embedding_dim()),
|
embedding_func=EmbeddingFunc(
|
||||||
|
embedding_dim=asyncio.run(get_embedding_dim()),
|
||||||
max_token_size=EMBEDDING_MAX_TOKEN_SIZE,
|
max_token_size=EMBEDDING_MAX_TOKEN_SIZE,
|
||||||
func=embedding_func),
|
func=embedding_func,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -99,8 +101,13 @@ async def query_endpoint(request: QueryRequest):
|
|||||||
try:
|
try:
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
result = await loop.run_in_executor(
|
result = await loop.run_in_executor(
|
||||||
None, lambda: rag.query(request.query,
|
None,
|
||||||
param=QueryParam(mode=request.mode, only_need_context=request.only_need_context))
|
lambda: rag.query(
|
||||||
|
request.query,
|
||||||
|
param=QueryParam(
|
||||||
|
mode=request.mode, only_need_context=request.only_need_context
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
return Response(status="success", data=result)
|
return Response(status="success", data=result)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
from .lightrag import LightRAG as LightRAG, QueryParam as QueryParam
|
from .lightrag import LightRAG as LightRAG, QueryParam as QueryParam
|
||||||
|
|
||||||
__version__ = "0.0.8"
|
__version__ = "0.0.9"
|
||||||
__author__ = "Zirui Guo"
|
__author__ = "Zirui Guo"
|
||||||
__url__ = "https://github.com/HKUDS/LightRAG"
|
__url__ = "https://github.com/HKUDS/LightRAG"
|
||||||
|
@@ -1,3 +1 @@
|
|||||||
# print ("init package vars here. ......")
|
# print ("init package vars here. ......")
|
||||||
|
|
||||||
|
|
||||||
|
@@ -66,7 +66,6 @@ def always_get_an_event_loop() -> asyncio.AbstractEventLoop:
|
|||||||
return loop
|
return loop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class LightRAG:
|
class LightRAG:
|
||||||
working_dir: str = field(
|
working_dir: str = field(
|
||||||
|
@@ -609,8 +609,7 @@ async def _find_most_related_text_unit_from_entities(
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
all_text_units = sorted(
|
all_text_units = sorted(
|
||||||
all_text_units,
|
all_text_units, key=lambda x: (x["order"], -x["relation_counts"])
|
||||||
key=lambda x: (x["order"], -x["relation_counts"])
|
|
||||||
)
|
)
|
||||||
|
|
||||||
all_text_units = truncate_list_by_token_size(
|
all_text_units = truncate_list_by_token_size(
|
||||||
|
2
test.py
2
test.py
@@ -1,6 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
from lightrag import LightRAG, QueryParam
|
from lightrag import LightRAG, QueryParam
|
||||||
from lightrag.llm import gpt_4o_mini_complete, gpt_4o_complete
|
from lightrag.llm import gpt_4o_mini_complete
|
||||||
#########
|
#########
|
||||||
# Uncomment the below two lines if running in a jupyter notebook to handle the async nature of rag.insert()
|
# Uncomment the below two lines if running in a jupyter notebook to handle the async nature of rag.insert()
|
||||||
# import nest_asyncio
|
# import nest_asyncio
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
from lightrag import LightRAG, QueryParam
|
from lightrag import LightRAG, QueryParam
|
||||||
from lightrag.llm import gpt_4o_mini_complete, gpt_4o_complete
|
from lightrag.llm import gpt_4o_mini_complete
|
||||||
|
|
||||||
|
|
||||||
#########
|
#########
|
||||||
|
Reference in New Issue
Block a user