链载Ai

标题: R2R:用文档便捷生成知识图谱,发现信息之间联系,结合AI大模型可本地运行 [打印本页]

作者: 链载Ai    时间: 昨天 10:59
标题: R2R:用文档便捷生成知识图谱,发现信息之间联系,结合AI大模型可本地运行

ingFang SC";font-size: 14px;text-wrap: wrap;line-height: 1.75;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);text-align: justify;">本文将展示如何借助R2R和Triplex模型,用文件创建知识图谱。构建的图谱可以选择在下游R2R RAG中使用。

R2R是一个全面、易用的检索增强型生成(RAG)应用开发平台,支持多模态文件处理、混合搜索、知识图谱构建,并提供用户管理、性能监控和可扩展的API接口。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16.8px;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(1, 155, 252);color: rgb(255, 255, 255);">准 备

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15.4px;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(1, 155, 252);color: rgb(63, 63, 63);">安装R2R

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);text-align: justify;">使用命令行工具开始使用R2R:

pipinstallr2r

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);text-align: justify;">安装后,如果条件允许,建议通过Docker启动R2R:

#exportOPENAI_API_KEY=sk-...r2r--config-name=defaultserve--dockerj

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);text-align: justify;">使用以下命令以local_llm_neo4j_kg配置文件启动R2R服务,并确保其在Docker环境中运行:

r2r--config-name=local_llm_neo4j_kgserve--docker

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15.4px;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(1, 155, 252);color: rgb(63, 63, 63);">安装Triplex模型(可选)

Triplex模型用于本地构建知识图谱,使用成本远远低于GPT-4o。

#Checkthenameoftheollamacontainerandmodifythecommandifitdiffersfromr2r-ollama-1dockerexec-itr2r-ollama-1ollamapullsciphi/triplexdockerexec-itr2r-ollama-1ollamapullllama3.1dockerexec-itr2r-ollama-1ollamapullmxbai-embed-large

本地安装Triplex模型方法可以参考这篇文章:

Triplex :用于创建知识图谱的开源模型,成本比GPT-4o低10倍!

安装完成后,使用Ollama启动模型。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16.8px;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(1, 155, 252);color: rgb(255, 255, 255);">初级操作

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15.4px;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(1, 155, 252);color: rgb(63, 63, 63);">数据获取及可视化

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);text-align: justify;">此处我们在本地创建了一个文件test.txt。

John is a person that works at Google. Paul is a person that works at Microsoft that collaborates with John.

然后使用R2R对test.txt把文件变成知识图谱

r2ringest-files--file-pathsr2r/examples/data/test.txt

最后,就得到了下面的知识图谱。图谱表达出文件test.txt˙各个实体之间的关系。

语义搜索

R2R还对文本进行了分块和嵌入,以实现语义搜索。验证步骤如下:

r2rsearch--query="whoisjohn?"

终端会输出以下内容

{'id':'5c7731be-81d6-5ab1-ae88-458fee8c462b','score':0.5679587721418247,'metadata':{'text':'JohnisapersonthatworksatGoogle.\n\nPaulisapersonthatworksatMicrosoftthatknowsJohn.','title':'test.txt','version':'v0','chunk_order':0,'document_id':'56f1fdc0-df48-5245-9910-75a0cfb5c641','extraction_id':'e7db5809-c9e0-529d-85bb-5a78c5d21a94','associatedQuery':'whoisjohn?'}}

高级操作

自定义实体和关系

我们想获取硅谷著名风投公司YC有关的几千家创业公司信息。怎么办呢?

首先,指定构建知识图谱的实体类型和关系,便于提高知识图谱构建质量:

from r2r import EntityType, Relation
entity_types = [EntityType("ORGANIZATION"),EntityType("COMPANY"),EntityType("SCHOOL"),# ... more entity types]
relations = [Relation("EDUCATED_AT"),Relation("WORKED_AT"),Relation("FOUNDED"),# ... more relations]

然后,向R2R服务器提交请求,更新知识图谱,使用你指定的实体类型:

client = R2RClient(base_url=base_url)r2r_prompts = R2RPromptProvider()
# use few-shot example to improve cloud provider performanceprompt_base = ("zero_shot_ner_kg_extraction"if local_modeelse "few_shot_ner_kg_extraction")
update_kg_prompt(client, r2r_prompts, prompt_base, entity_types, relations)

接下来,使用下面命令查看他们之间的关系。

#add--local_mode=Falsewhenusingcloudproviderspython-mr2r.examples.scripts.advanced_kg_cookbook--max_entries=1

再次使用Neo4j浏览器可视化生成的基础图谱。下图可视化显示了和Airbnb公司有关的信息。

加大数据集

现在使用更大规模的数据集:

python-mr2r.examples.scripts.advanced_kg_cookbook--max_entries=100

加载完上述所有数据后,你会发现图谱更加丰富。当专注于旧金山并限制节点数为250时,我们可以看到更多数据之间的联系。

你可以使用下面命令,便捷查询各种信息。

# Find all founders

query = """

MATCH (pERSON)-[:FOUNDED]->(c)

RETURN p.id AS Founder, c.id AS Company

ORDER BY c.id

LIMIT 10;

"""

# [{'Founder': 'Nathan Blecharczyk', 'Company': 'Airbnb'}, {'Founder': 'Brian Chesky', 'Company': 'Airbnb'}, {'Founder': 'Joe Gebbia', 'Company': 'Airbnb'}, {'Founder': 'Tommy Guo', 'Company': 'Airfront'}, {'Founder': 'Joanne Wang', 'Company': 'Airfront'}, {'Founder': 'Adam Tilton', 'Company': 'Aktive'}, {'Founder': 'Abraham Heifets', 'Company': 'Atomwise'}, {'Founder': 'Nicholas Charriere', 'Company': 'Axilla'}, {'Founder': 'Caitlin', 'Company': 'B2B marketing software'}, {'Founder': 'Timmy', 'Company': 'B2B marketing software'}]


# Find 2-time founders

query = """

MATCH (pERSON)-[:FOUNDED]->(c:ORGANIZATION)

WITH p.id AS Person, COUNT(c) AS CompaniesCount

RETURN Person, CompaniesCount

ORDER BY CompaniesCount DESC

LIMIT 10;

"""

# [{'Person': 'Ilana Nasser', 'CompaniesCount': 3}, {'Person': 'Eric', 'CompaniesCount': 2}, {'Person': 'Kris Pahuja', 'CompaniesCount': 2}, {'Person': 'Sam', 'CompaniesCount': 2}, {'Person': 'Tom Blomfield', 'CompaniesCount': 2}, {'Person': 'Umur Cubukcu', 'CompaniesCount': 2}, {'Person': 'Jason', 'CompaniesCount': 2}, {'Person': 'Joe Gebbia', 'CompaniesCount': 2}, {'Person': 'Adam Tilton', 'CompaniesCount': 2}, {'Person': 'Alex', 'CompaniesCount': 2}]


# Find companies with AI products

query = """

MATCH (c:ORGANIZATION)-[rRODUCT]->(t)

WHERE t.id CONTAINS 'AI'

RETURN DISTINCT c.id AS Company, t.id AS Product

ORDER BY c.id

LIMIT 10;

"""

# [{'Company': 'AgentsForce', 'Product': 'AI support agents'}, {'Company': 'Airfront', 'Product': 'AI-first email platform'}, {'Company': 'Airfront', 'Product': 'AI-first email platform with built-in automations'}, {'Company': 'Airfront', 'Product': 'AI automation platform'}, {'Company': 'Axflow', 'Product': 'AI app'}, {'Company': 'Clarum', 'Product': 'AI-powered due diligence solutions'}, {'Company': 'Clarum', 'Product': 'AI-powered due diligence'}, {'Company': 'CommodityAI', 'Product': 'AI-automation platform'}, {'Company': 'Dawn', 'Product': 'Analytics for AI products'}, {'Company': 'Decipher', 'Product': 'AI-powered user impact summaries'}]```

更多

R2R还可以使用知识图谱代理(Agents)完成更灵活和复杂的查询,此部分可以参考官方文档(见文末)。

总 结

R2R创建后的知识图谱,提供了一种便捷的方式结构化和查询从文档中提取的信息。通过结合向量搜索、语义搜索和结构化查询,你可以使用非结构化和结构化数据构建复杂检索系统。

微软7月发布的GraphRAG技术,通过整合文本抽取、网络分析和大型语言模型的提示与总结功能,形成了一个全面的系统,能够提供对文本数据的深度理解。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5