RAG前置!摸数据!私有数据做知识图谱!把数据存到Neo4J中!

昨天把一个超高质量的txt知识图谱数据,转换为csv格式!

只有这样,才能深入,摸清楚数据的底!导入到知识图谱中,最终用这个知识图谱,构建RAG应用!

今天,有三大目标,1是摸清楚这个数据的底!2是处理好数据的瑕疵!3是把数据导入到neo4j中!

导入部分(完整数据太大)数据后,是这样的!

现在!这份数据有450万+行数据,如下:

今天,我们深入摸这份数据!

一边摸,一边分析!一边修!

人的专注力只有10分钟,那!话不多说!

① 摸数据!是怎样的数据?多少缺失值?

② 处理数据!找到缺失+非标格式,含进阶策略!

③ 链接neo4j!申请key+接入到本地环境!

④ 导入neo4j!创建节点+边,导入到知识图谱中!

第一部分:摸数据!怎样的数据?

我们刚刚把他转为csv,可以深入摸摸了!

1.1 进入实践环境!

激活conda环境!

激活我们上一篇创建的conda环境-medkg

conda activate medkg

进入jupyter!

输入以下指令,他会自动跳转到浏览器!

jupyter notebook

打开代码!

1.2 了解数据基本情况!

现在,开始摸数据!

导入数据!

这里,你要把下方文件,改为自己存放的路径!

雄哥把他加载到“med_df”的DataFrame中!

# 加载数据``file_path = r'F:\med\CPubMed-KGv2_0.csv'``med_df = pd.read_csv(file_path)

看看数据有多少行、列!

测试一下导入成功没有,数据有多少行,多少列!

# 显示前5行数据,确认成功加载``med_df.head()

看看列的名称!

我们通过下面代码,看到他第一行,表头都是什么!

# 看看列的名字都是啥从左到右``med_df.columns

看看有多少数据!

# 看看多少行多少列``med_df.shape

到这,我们基本知道数据如何了!

继续摸!

因为导入知识图谱的时候,是批量处理的,所以要摸清楚,哪些数据是不符合标准!

这里,雄哥最想摸清楚数据的几个方面!

a.是否有缺失值

–影响kg赋值,无法完成导入

就是单元格中,有空的格子,值是空的

b.是否有特殊符号

–无法使用Cypher,创建图谱时报错

根据 Neo4j 的规范,关系名称不能包含某些特殊字符,如空格、括号(())、标点符号等;

c.是否有重复值

–影响导入性能,可能重复创建

查重同时,也要注意误判,导致数据缺失

因为我们手上的这份kg数据,质量非常高,所以无需更多其他复杂策略!

做以上这些,只是为了确保,在txt–csv过程中,可能出现问题!

毕竟,我们的数据有460万+条!非常庞大!

1.3 深入摸摸数据

看看缺失值有多少!

这里列出了每一列,分别有多少缺失值!

第二列没有缺失值,后面都有42万多的缺失值!不慌!

# 看看缺失值有多少``med_df.isna().sum()

缺失值打印出来!

我们把每一列的缺失值,都打出来!

这不就是上一篇,我们看到的同义词那一批数据嘛!

另外,在第一列的数据,似乎有特殊情况,125行缺失!

第二部分:处理问题数据

因为这样看不到数据中哪些缺失了!

没关系,雄哥先把缺失值,从原先的DataFrame中剪切出来,然后保存到本地来!

便于后续跟进!

那!这部分数据,本篇就不再上传了!

保存缺失值的数据!

这里另存为到本地了!改为你想保存的路径!

# 保存到CSV文件``missing_rows_df.to_csv('F:\\med\\missing_values.csv', index=False)
![](https://mmbiz.qpic.cn/sz_mmbiz_png/d3c3NxC8H1z2bCsYqvoOwyH0AH4csJQSAQwL4AdibgHbRElykicp5Ys1NLBFCVkHbvWT8DxZVMDnWOk20CzYTTWQ/640?wx_fmt=png&from=appmsg)

2.1 处理缺失值!

直接剪切出来,另存为,我们继续用0缺失值的数据,继续!

# 看看还有没有缺失值``med_df_cleaned.isna().sum()

跟着雄哥,继续摸!

2.2 处理特殊符号!

有没有Cypher不支持的特殊符号!

可能会有些刚开始学的朋友,这里介绍一下Cypher!

Cypher是一种为图形数据库设计的声明式查询语言,与Neo4j图数据库一起使用。专为处理图形数据结构构建

以下是Cypher的一些基本规则和作用:

规则:

  1. 模式匹配(Pattern Matching)

  2. Cypher允许用户通过模式匹配来查询图数据。模式由节点(用圆括号()表示)、关系(用中括号[]表示)和属性(键值对)组成。

  3. 例如:(a)-[:FRIEND]->(b) 表示节点a和节点b之间有一个类型为FRIEND的关系。

  4. 语法结构

  5. 一个典型的Cypher查询包括一个RETURN子句,用于指定要返回的结果,以及一个或多个MATCHWHEREWITH等子句来定义查询逻辑。

  6. 例如:MATCH (n) RETURN n; 匹配所有节点并返回它们。

  7. 命名规则

  8. 节点和关系可以用字母、数字和下划线命名,但不能以数字开头。

  9. 属性名称也遵循类似的规则。

  10. 大小写敏感性

  11. Cypher对关键字是不区分大小写的,但对属性键和字符串值是区分大小写的。

  12. 注释

  13. 单行注释以//开始,多行注释可以用/* ... */包裹。

作用:

  1. 数据查询

  2. Cypher可以用来查询图数据库中的节点、关系和属性。

  3. 可以执行复杂的图算法,如最短路径、路径查找等。

  4. 数据修改

  5. 创建节点和关系:使用CREATE关键字。

  6. 更新属性:使用SET关键字。

  7. 删除节点和关系:使用DELETE关键字。

  8. 模式匹配

  9. 可以定义复杂的模式来寻找图中特定的结构。

  10. 索引和约束

  11. Cypher可以用来创建索引,以加快查询速度。

  12. 也可以定义约束,比如唯一性约束,保证数据的完整性。

  13. 批量操作

  14. 可以通过Cypher执行批量插入、更新或删除操作。

  15. 脚本编写

  16. 可以将多个Cypher查询组合成一个脚本,进行自动化处理。

  17. 聚合和分组

  18. 支持使用RETURN子句中的聚合函数(如COUNTSUMAVG等)对查询结果进行分组和聚合。

现在,我们要把数据中特殊符号,处理一下!

这样才能正常导入!

def clean_string(s):`    `if isinstance(s, str):  # 检查是否为字符串类型`        `return re.sub(r'[^\w\s]', '', s)  # 替换非字母、数字和空格的字符`    `return s  # 如果不是字符串,返回原值

跟着代码继续操作!

我们开始准备Neo4J了!

第三部分:链接neo4j!申请key+接入到本地环境!


上面,我们就准备好数据啦!

现在准备接入!

打开下方链接,到Neo4J申请账号!

免费,限量2万个节点!

当然!可以完全本地的!这样的话,就不会限量~!

不管你是在线还是本地的,方法都是一样的!

3.1 申请neo4j账号及实例

复制下方链接

在浏览器打开,确保网络顺畅!

https://console.neo4j.io/

填写邮箱然后下一步创建!

点击发送验证邮件!

然后你在邮箱中点击链接,就可以激活!

回到刚刚的neo4j界面!

刷新一下!点同意!

点击免费的0元!

点了之后,不要关闭!注意!

点击下载配置文件!

一定要点击下载!不然后面你想查询就非常麻烦了!

浏览器会自动下载,打开后,是你的key!

NEO4J_URI=xxxxxxxxxxx``NEO4J_USERNAME=xxxxxxxxxx``NEO4J_PASSWORD=xxxxxxxxxxxxxxx``AURA_INSTANCEID=xxxxxxxxxxxxxxxxx``AURA_INSTANCENAME=xxxxxxxxxxxxxx

在工作目录创建一个.env文件!

把你下载到的key,粘贴进去!

3.2 链接neo4j

现在,我们把这个配置文件,连接到环境中!

from py2neo import Graph``from dotenv import load_dotenv``import os``   ``# 加载 .env 文件``load_dotenv()``   ``# 获取环境变量``neo4j_uri = os.getenv("NEO4J_URI")``neo4j_username = os.getenv("NEO4J_USERNAME")``neo4j_password = os.getenv("NEO4J_PASSWORD")``   ``# 连接到Neo4j``graph = Graph(neo4j_uri, auth=(neo4j_username, neo4j_password))

第四部分:把数据导入到neo4j!


你根据雄哥的代码一步步操作,每一行代码都已经写明白,这行代码是干嘛的!

有些操作就不在这里写了,篇幅有限!

导入的时候,我们要根据数据的情况,导入!雄哥之前已分析过!

这份数据,就这策略!

常量(3个):“疾病”、“其他治疗”、“辅助治疗”

常变量(2个):“胃十二指肠出血”、“禁食”

头实体头实体类型关系尾实体尾实体类型
胃十二指肠出血疾病辅助治疗禁食其他治疗
A点A点属性B点B点属性

现在,开始创建节点和边!

    `# 创建节点和关系`    `graph.run(f"""`        `MERGE (h:Entity {{name: '{head_entity}', type: '{head_type}'}})`        `MERGE (t:Entity {{name: '{tail_entity}', type: '{tail_type}'}})`        `MERGE (h)-[:{relation}]->(t)`    `""")`

执行后,jupyter右上角开始运行!

干完后,你在neo4j刷新,可以看到导入结果!

点击右上角Open!

就可以看到这个图谱的节点与边!

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

在这里插入图片描述

<think>好的,用户现在问的是如何数据量的RAG知识库技术。首先,我需要确认用户对RAG的理解程度。RAG,也就是检索增强生成,结合了信息检索和生成模型,常用于问答系统等场景。用户提到的是大数据量,所以可能需要处理海量文档,这对系统的扩展性和效率有较高要求。 接下来,用户可能是技术人员,比如工程师或者数据科学家,想要构建一个高效的RAG系统。他们可能遇到的问题包括如何高效检索、处理速度、准确性以及成本控制。需要从数据预处理、检索优化、生成模型选择、工程化部署等方面来解答。 要考虑大数据量的挑战,比如数据分块策略,避免信息丢失。可能需要使用向量数据库,比如Milvus或FAISS,来加速相似性搜索。另外,可能需要分布式计算或者并行处理来提高处理速度。 还要注意模型的上下文窗口限制,比如GPT-4的最大token数,可能需要优化分块大小和重叠策略。另外,混合检索方法,结合关键词和向量搜索,可能提升准确性。 用户可能没有提到的深层需求是系统的实时性、可扩展性以及维护成本。需要建议监控和迭代,持续优化系统。可能还需要提到硬件选型,比如GPU加速,或者使用云计算服务来弹性扩展资源。 总结回答结构:先介绍RAG的基本概念,然后分步骤讲解数据预处理、检索策略、生成模型、工程优化,最后提维护和监控。确保覆盖所有关键点,同时给出实际例子或工具推荐,帮助用户落地实施。</think>构建大数据量的RAG(Retrieval-Augmented Generation,检索增强生成)知识库技术需要综合数据处理、高效检索和生成模型的协同优化。以下是关键步骤和技术要点: --- ### **1. 数据准备与预处理** - **数据收集** 整合多源数据(文档、网页、数据库、API等),需覆盖业务场景需求,注意数据质量和版权合规性。 - **数据清洗** 去重、去噪(如HTML标签、乱码)、结构化处理(表格/文本分离)、实体识别(如日期、人名)。 - **分块(Chunking)** - **策略**:按段落、句子或固定长度分块(如512~2048 tokens),可结合语义边界(如Markdown标题)避免信息割裂。 - **重叠处理**:相邻块间部分重叠(如10%内容),确保上下文连贯。 - **向量化** 使用嵌入模型(如`text-embedding-3-large`、`BGE`、`OpenAI Embeddings`)将文本转换为高维向量,支持后续相似性检索。 --- ### **2. 高效检索系统构建** - **向量数据库选型** 支持大规模向量快速检索,如: - **云服务**:Pinecone、AWS OpenSearch(含k-NN插件)、Azure Cognitive Search。 - **开源**:Milvus、FAISS、Weaviate、Qdrant。 - **混合检索策略** - **多路召回**:结合向量检索(语义相似性)+ 关键词检索(BM25/Elasticsearch)提升覆盖率。 - **重排序(Rerank)**:使用交叉编码器(如Cohere Reranker、BGE Reranker)对初筛结果精排。 - **分布式架构** 对TB级数据,采用分片(Sharding)、并行计算(如Spark预处理)和缓存机制(Redis/Memcached)加速响应。 --- ### **3. 生成模型优化** - **模型选型** - **通用场景**:GPT-4、Claude、DeepSeek-R1。 - **垂直领域**:微调领域适配模型(如Llama-3、Qwen)或使用工具增强(如代码解释器、公式生成)。 - **上下文压缩** 针对长上下文(如100k tokens),采用滑动窗口、关键信息提取(如LangChain的`ContextualCompressionRetriever`)减少冗余。 - **提示工程** - 设计明确指令(如“基于以下资料回答,若未提及则说明未知”)。 - 结构化输出要求(JSON、Markdown表格等)。 --- ### **4. 工程化与性能优化** - **流水线设计** 异步处理数据更新,实现实时/近实时索引更新(如Kafka流处理)。 - **硬件加速** - 向量检索:GPU加速(CUDA+FAISS)或专用硬件(如TPU)。 - 模型推理:量化(GGUF/FP16)、模型剪枝、使用Triton推理服务器。 - **成本控制** - 冷热数据分层存储(如S3+向量数据库)。 - 按需加载索引,限制高成本API调用(如按token计费的模型)。 --- ### **5. 评估与迭代** - **评估指标** - 检索阶段:召回率(Recall@k)、准确率(Precision@k)。 - 生成阶段:ROUGE、BLEU分数,人工评估相关性、事实一致性。 - **持续优化** - 错误分析:挖掘Bad Case(如幻觉、检索遗漏)。 - 数据闭环:收集用户反馈,迭代更新知识库和模型。 --- ### **典型工具链示例** ```plaintext 数据源 → Apache Spark(清洗) → Sentence Transformers(向量化) → Milvus(向量库) ↓ 用户提问 → Elasticsearch(关键词检索) → 混合召回 → Cohere Reranker → GPT-4 → 最终回答 ``` --- ### **挑战与解决方案** - **数据更新延迟**:增量索引(如Delta Lake)+ 版本控制。 - **长尾查询**:引入Few-shot Prompt或少量数据微调。 - **多模态扩展**:结合CLIP(图像)、Whisper(音频)实现跨模态检索。 通过上述步骤,可构建支持海量数据、低延迟、高准确性的RAG系统,适用于智能客服、文档分析等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值