Knowledge Graphs for RAG -- Constructing a Knowledge Graph from Text Documents (吴恩达-知识图谱在RAG中的应用 3)

Constructing a Knowledge Graph from Text Documents

1 导包(python+langchain)

from dotenv import load_dotenv
import os

# Common data processing
import json
import textwrap

# Langchain
from langchain_community.graphs import Neo4jGraph
from langchain_community.vectorstores import Neo4jVector
from langchain_openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQAWithSourcesChain
from langchain_openai import ChatOpenAI


# Warning control
import warnings
warnings.filterwarnings("ignore")
# Load from environment
load_dotenv('.env', override=True)
NEO4J_URI = os.getenv('NEO4J_URI')
NEO4J_USERNAME = os.getenv('NEO4J_USERNAME')
NEO4J_PASSWORD = os.getenv('NEO4J_PASSWORD')
NEO4J_DATABASE = os.getenv('NEO4J_DATABASE') or 'neo4j'
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# Note the code below is unique to this course environment, and not a 
# standard part of Neo4j's integration with OpenAI. Remove if running 
# in your own environment.
OPENAI_ENDPOINT = os.getenv('OPENAI_BASE_URL') + '/embeddings'

# 全局变量
VECTOR_INDEX_NAME = 'form_10k_chunks'
VECTOR_NODE_LABEL = 'Chunk'
VECTOR_SOURCE_PROPERTY = 'text'
VECTOR_EMBEDDING_PROPERTY = 'textEmbedding'

2 查看并预分析一下10-K json文件(需要创建向量索引的文件)

  • 上市公司需要每年向美国证券交易委员会(SEC)填写10-K表格
  • 可以使用美国证券交易委员会的EDGAR数据库搜索这些文件
  • 在接下来的几节课中,将使用一个名为NetApp的公司的10-K表格
    在这里插入图片描述

在这里插入图片描述
打开就长下面这个样子(随便截了几张)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将上面的文件构建知识图谱之后就可以对这些金融数据进行问答对话了,但是下载下来是XML 格式,需要对XML进行解析并对数据进行清洗。

2.1 数据清洗流程(得到JSON文件):

  1. 首先进行一些正则表达式清理,浏览XML,尝试找到我们真正想要的片段
  2. 然后使用Beautiful Soup 将其中一部分XML转换成干净的Python数据结构
  3. 提取关键内容,比如 CIK标识符:它是一个中心索引,用于在SEC中识别公司
  4. 对于大段的文本,查看(1,1A,7和7A条款)
  5. 最后将他们转换成JSON,用于后面导入并开始创建知识图谱
2.2 JSON文件到可检索的大体流程规划:
  1. 由于数据复杂性,每种形式都有不同的文本,首先要把他们拆分成块(使用langchain的textsplitter)<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值