cleanup no required install
This commit is contained in:
@@ -247,7 +247,7 @@ rag = LightRAG(
|
|||||||
|
|
||||||
* If you want to use Hugging Face models, you only need to set LightRAG as follows:
|
* If you want to use Hugging Face models, you only need to set LightRAG as follows:
|
||||||
|
|
||||||
See lightrag_hf_demo.py
|
See `lightrag_hf_demo.py`
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from lightrag.llm import hf_model_complete, hf_embed
|
from lightrag.llm import hf_model_complete, hf_embed
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
|
aiofiles
|
||||||
ascii_colors
|
ascii_colors
|
||||||
fastapi
|
fastapi
|
||||||
numpy
|
numpy
|
||||||
pipmaster
|
pipmaster
|
||||||
python-dotenv
|
python-dotenv
|
||||||
python-multipart
|
|
||||||
tenacity
|
tenacity
|
||||||
tiktoken
|
tiktoken
|
||||||
uvicorn
|
uvicorn
|
||||||
|
@@ -6,12 +6,16 @@ import numpy as np
|
|||||||
from lightrag.utils import logger
|
from lightrag.utils import logger
|
||||||
from ..base import BaseVectorStorage
|
from ..base import BaseVectorStorage
|
||||||
import pipmaster as pm
|
import pipmaster as pm
|
||||||
import configparser
|
|
||||||
|
|
||||||
|
if not pm.is_installed("configparser"):
|
||||||
|
pm.install("configparser")
|
||||||
|
|
||||||
if not pm.is_installed("pymilvus"):
|
if not pm.is_installed("pymilvus"):
|
||||||
pm.install("pymilvus")
|
pm.install("pymilvus")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
import configparser
|
||||||
from pymilvus import MilvusClient
|
from pymilvus import MilvusClient
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
import html
|
|
||||||
import os
|
import os
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any, cast, final
|
from typing import Any, final
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
@@ -14,8 +13,16 @@ from lightrag.utils import (
|
|||||||
from lightrag.base import (
|
from lightrag.base import (
|
||||||
BaseGraphStorage,
|
BaseGraphStorage,
|
||||||
)
|
)
|
||||||
|
import pipmaster as pm
|
||||||
|
|
||||||
|
if not pm.is_installed("graspologic"):
|
||||||
|
pm.install("graspologic")
|
||||||
|
|
||||||
|
if not pm.is_installed("networkx"):
|
||||||
|
pm.install("networkx")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
from graspologic import embed
|
||||||
import networkx as nx
|
import networkx as nx
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
@@ -39,21 +46,6 @@ class NetworkXStorage(BaseGraphStorage):
|
|||||||
)
|
)
|
||||||
nx.write_graphml(graph, file_name)
|
nx.write_graphml(graph, file_name)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def stable_largest_connected_component(graph: nx.Graph) -> nx.Graph:
|
|
||||||
"""Refer to https://github.com/microsoft/graphrag/index/graph/utils/stable_lcc.py
|
|
||||||
Return the largest connected component of the graph, with nodes and edges sorted in a stable way.
|
|
||||||
"""
|
|
||||||
from graspologic.utils import largest_connected_component
|
|
||||||
|
|
||||||
graph = graph.copy()
|
|
||||||
graph = cast(nx.Graph, largest_connected_component(graph))
|
|
||||||
node_mapping = {
|
|
||||||
node: html.unescape(node.upper().strip()) for node in graph.nodes()
|
|
||||||
} # type: ignore
|
|
||||||
graph = nx.relabel_nodes(graph, node_mapping)
|
|
||||||
return NetworkXStorage._stabilize_graph(graph)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _stabilize_graph(graph: nx.Graph) -> nx.Graph:
|
def _stabilize_graph(graph: nx.Graph) -> nx.Graph:
|
||||||
"""Refer to https://github.com/microsoft/graphrag/index/graph/utils/stable_lcc.py
|
"""Refer to https://github.com/microsoft/graphrag/index/graph/utils/stable_lcc.py
|
||||||
@@ -153,8 +145,6 @@ class NetworkXStorage(BaseGraphStorage):
|
|||||||
|
|
||||||
# @TODO: NOT USED
|
# @TODO: NOT USED
|
||||||
async def _node2vec_embed(self):
|
async def _node2vec_embed(self):
|
||||||
from graspologic import embed
|
|
||||||
|
|
||||||
embeddings, nodes = embed.node2vec_embed(
|
embeddings, nodes = embed.node2vec_embed(
|
||||||
self._graph,
|
self._graph,
|
||||||
**self.global_config["node2vec_params"],
|
**self.global_config["node2vec_params"],
|
||||||
|
@@ -20,10 +20,14 @@ from ..utils import logger
|
|||||||
|
|
||||||
import pipmaster as pm
|
import pipmaster as pm
|
||||||
|
|
||||||
|
if not pm.is_installed("graspologic"):
|
||||||
|
pm.install("graspologic")
|
||||||
|
|
||||||
if not pm.is_installed("oracledb"):
|
if not pm.is_installed("oracledb"):
|
||||||
pm.install("oracledb")
|
pm.install("oracledb")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
from graspologic import embed
|
||||||
import oracledb
|
import oracledb
|
||||||
|
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
@@ -452,8 +456,6 @@ class OracleGraphStorage(BaseGraphStorage):
|
|||||||
|
|
||||||
async def _node2vec_embed(self):
|
async def _node2vec_embed(self):
|
||||||
"""为节点生成向量"""
|
"""为节点生成向量"""
|
||||||
from graspologic import embed
|
|
||||||
|
|
||||||
embeddings, nodes = embed.node2vec_embed(
|
embeddings, nodes = embed.node2vec_embed(
|
||||||
self._graph,
|
self._graph,
|
||||||
**self.config["node2vec_params"],
|
**self.config["node2vec_params"],
|
||||||
|
@@ -1,12 +1,6 @@
|
|||||||
accelerate
|
|
||||||
aiofiles
|
|
||||||
aiohttp
|
aiohttp
|
||||||
configparser
|
configparser
|
||||||
|
|
||||||
# File manipulation libraries
|
|
||||||
docling
|
|
||||||
graspologic
|
|
||||||
|
|
||||||
# database packages
|
# database packages
|
||||||
networkx
|
networkx
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user