AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


R2R:用文档便捷生成知识图谱,发现信息之间联系,结合AI大模型可本地运行
发布日期:2024-08-11 04:31:55 浏览次数: 1744


本文将展示如何借助R2R和Triplex模型,用文件创建知识图谱。构建的图谱可以选择在下游R2R RAG中使用。

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

准 备

安装R2R

使用命令行工具开始使用R2R:

pip install r2r

安装后,如果条件允许,建议通过Docker启动R2R:

# export OPENAI_API_KEY=sk-...r2r --config-name=default serve --dockerj

使用以下命令以local_llm_neo4j_kg配置文件启动R2R服务,并确保其在Docker环境中运行:

r2r --config-name=local_llm_neo4j_kg serve --docker

安装Triplex模型(可选)

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

# Check the name of the ollama container and modify the command if it differs from r2r-ollama-1docker exec -it r2r-ollama-1 ollama pull sciphi/triplexdocker exec -it r2r-ollama-1 ollama pull llama3.1docker exec -it r2r-ollama-1 ollama pull mxbai-embed-large

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

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

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

初级操作

数据获取及可视化

此处我们在本地创建了一个文件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把文件变成知识图谱

r2r ingest-files --file-paths r2r/examples/data/test.txt

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

语义搜索

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

r2r search --query="who is john?"

终端会输出以下内容

{'id': '5c7731be-81d6-5ab1-ae88-458fee8c462b', 'score': 0.5679587721418247, 'metadata': {'text': 'John is a person that works at Google.\n\nPaul is a person that works at Microsoft that knows John.', 'title': 'test.txt', 'version': 'v0', 'chunk_order': 0, 'document_id': '56f1fdc0-df48-5245-9910-75a0cfb5c641', 'extraction_id': 'e7db5809-c9e0-529d-85bb-5a78c5d21a94', 'associatedQuery': 'who is john?'}}

高级操作

自定义实体和关系

我们想获取硅谷著名风投公司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=False when using cloud providerspython -m r2r.examples.scripts.advanced_kg_cookbook --max_entries=1

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

加大数据集

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

python -m r2r.examples.scripts.advanced_kg_cookbook --max_entries=100

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

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

# Find all founders

query = """

MATCH (p: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 (p: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)-[r:PRODUCT]->(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技术,通过整合文本抽取、网络分析和大型语言模型的提示与总结功能,形成了一个全面的系统,能够提供对文本数据的深度理解。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询