利用LlamaIndex和Ollama构建GraphARG本地知识库


在现代的人工智能应用中,如何有效地管理和检索数据是一个重要的课题。LlamaIndex 提供了一种灵活的数据框架,使开发者能够轻松地构建和管理与大型语言模型(LLM)相关的应用。在本文中,我们将深入探讨如何使用 LlamaIndex 创建和检索知识库索引。

1. 环境准备

pip install llama_index
pip install llama-index-llms-ollama
pip install llama-index-embeddings-ollama
pip install llama-index-readers-database
pip install llama-index-vector-stores-postgres
pip install langchain
pip install langchain-core
pip install llama-index-graph-stores-neo4j
pip install langchain-text-splitters
pip install spacy

2. 启用诊断日志

import os, logging, sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

3. 配置本地模型

请到 https://ollama.com/安装 Ollama,并下载大模型,比如:Llama 3、 Phi 3、 Mistral、Gemma、qwen等。为了测试方便,我们选用速度更快、效果较好的 qwen2:7B模型。

from llama_index.llms.ollama import Ollama
llm_ollama = Ollama(base_url='http://127.0.0.1:11434',model="qwen2:7b", request_timeout=600.0)

4. 配置本地向量模型

这里选用nomic-embed-text文本向量模型

from llama_index.embeddings.ollama import OllamaEmbedding
nomic_embed_text= OllamaEmbedding(base_url='http://127.0.0.1:11434',model_name='nomic-embed-text')

5. LlamaIndex全局配置


from llama_index.core import Settings
# 指定 LLM
Settings.llm = llm_ollama
# 自定义文档分块
Settings.chunk_size=500
# 指定向量模型
Settings.embed_model = nomic_embed_text

6. 创建向量存储和知识图片存储数据库

6.1 自定义向量存储

# 向量存储使用postgres
from llama_index.vector_stores.postgres import PGVectorStore
vector_store = PGVectorStore.from_params(
    database="langchat",
    host="syg-node",
    password="AaC43.#5",
    port=5432,
    user="postgres",
    table_name="llama_vector_store",
    embed_dim=768
)

6.2 知识图谱存储 neo4j

from llama_index.core import PropertyGraphIndex
from llama_index.graph_stores.neo4j import Neo4jPropertyGraphStore
graph_store = Neo4jPropertyGraphStore(
    username="neo4j",
    password="1+dZo#eG6*H=9.2",
    url="bolt://syg-node:7687",
    database="neo4j"
)

6.3 设置存储

from llama_index.core import StorageContext
storage_context  = StorageContext.from_defaults(
    vector_store=vector_store,
    property_graph_store=graph_store
)

7. 从数据库加载数据

from llama_index.readers.database import DatabaseReader
db = DatabaseReader(
    scheme="mysql",
    host="syg-node",  # Database Host
    port="3206",  # Database Port
    user="root",  # Database User
    password="AaC43.#5",  # Database Password
    dbname="stock_db",  # Database Name
)

query = f"""
select concat(title,'。\n',summary,'\n',content) as text from tb_article_info where content_flag =1 order by id limit 0,10
"""

documents = db.load_data(query=query)
print(f"Loaded {len(documents)} Files")
print(documents[0])

8. 文本分割器: SpacyTextSplitter

安装 zh_core_web_sm模型

## https://github.com/explosion/spacy-models/releases/download/zh_core_web_sm-3.7.0/zh_core_web_sm-3.7.0-py3-none-any.whl
python download zh_core_web_sm
from llama_index.core.node_parser import LangchainNodeParser
from langchain.text_splitter import SpacyTextSplitter
spacy_text_splitter = LangchainNodeParser(SpacyTextSplitter(
    pipeline="zh_core_web_sm", 
    chunk_size = 512,
    chunk_overlap = 128
))

9. 配置管道

from llama_index.core.ingestion import IngestionPipeline
pipeline = IngestionPipeline(
    transformations=[
        spacy_text_splitter
    ],
    vector_store=vector_store
)

# 生成索引存入向量数据库
nodes = pipeline.run(documents=documents)
print(f"Ingested {len(nodes)} Nodes")

10. 创建知识图谱存储索引

from llama_index.core import PropertyGraphIndex
index = PropertyGraphIndex(nodes=nodes,
                           llm=llm_ollama,
                           use_async=False,
                           storage_context=storage_context,
                           show_progress=True)

这个框架异步处理数据有bug,需要把 use_async设置为 False

11 .创建查询引擎

index = PropertyGraphIndex.from_existing(property_graph_store=graph_store,vector_store=vector_store)
query_engine = index.as_query_engine(llm=llm_ollama)
res = query_engine.query("孩子连着上七天八天的课,确实挺累的")
print(res)
Llamaindex是一个开源的搜索引擎,可以用于快速搜索索引大型数据集。为了在本地部署Llamaindex,您需要按照以下步骤进行操作。 首先,您需要从Llamaindex的官方GitHub页面上下载源代码。确保您的计算机已安装了Git系统,然后使用命令行工具输入以下命令来克隆代码库: ``` git clone https://github.com/llama-lab/llamaindex.git ``` 下载完成后,进入项目文件夹并创建一个Python虚拟环境。使用以下命令可以创建一个虚拟环境: ``` python3 -m venv llama-env ``` 然后需要激活虚拟环境。在MacLinux系统下,使用以下命令: ``` source llama-env/bin/activate ``` 在Windows系统下,使用以下命令: ``` llama-env\Scripts\activate ``` 接下来,安装Llamaindex的依赖项。在虚拟环境中运行以下命令: ``` pip install -r requirements.txt ``` 等待依赖项安装完成后,可以开始配置Llamaindex。编辑`config.yaml`文件,根据您的需求进行相应的修改。您可以设置数据集的路径、索引文件的位置其他相关参数。 完成配置后,运行以下命令来创建索引: ``` python3 llama.py -f path/to/dataset ``` 上述命令中的`path/to/dataset`应替换为实际的数据集路径。运行该命令后,Llamaindex会开始索引数据集。 当索引完成后,您可以使用以下命令来搜索索引中的数据: ``` python3 llama.py -s "your search query" ``` 您可以将`"your search query"`替换为实际的搜索关键字。Llamaindex将返回与关键字匹配的结果。 以上就是在本地部署Llamaindex的步骤。祝您在使用Llamaindex时取得成功!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值