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