微软开源GraphRAG的使用教程-使用自定义数据测试GraphRAG
微软在今年4月份的时候提出了GraphRAG的概念,然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前,已有6900+Star。
安装教程
官方推荐使用Python3.10-3.12版本,我使用Python3.10版本安装时,在初始化项目过程中会报错,切换到Python3.11版本后运行正常,推测是Python3.10与微软的一些最新的SDK不兼容。所以建议使用Python3.11的环境,安装GraphRAG比较简单,直接下面一行代码即可安装成功。
pip install graphrag
使用教程
在这个教程中,我们使用马伯庸的《太白金星有点烦》这个短篇小说为例,测试下使用微软开源的GraphRAG的处理效果。
注意,GraphRAG是使用LLM来提取文本片段中的实体关系,因此耗费Token数较多,如果是个人调研使用,不建议使用GPT4级别的模型(费用太高,不差钱的大佬请忽略此条建议)。综合成本和效果,我这里使用的是DeepSeek-Chat模型。
初始化项目
我这边先创建了一个临时测试目录myTest,然后按照官方教程,在myTest目录下创建了input目录,并把《太白金星有点烦》这本书的txt版本重命名为book.txt后放到input目录下。然后调用python -m graphrag.index --init
进行初始化工作,生成一些配置文件。
mkdir ./myTest/input
curl https://www.xxx.com/太白金星有点烦.txt > ./myTest/input/book.txt // 这里是示例代码,大家在测试时根据实际情况放入自己要测试的txt文本即可。
cd ./myTest
python -m graphrag.index --init
执行完成后,会在当前目录(即MyTest)目录下生成几个新的文件夹:output-后续执行生成的中间结果会保存到这个目录中;prompts-处理过程中用到的一些Prompt内容;.env-大模型API配置文件,里面默认就一个GRAPHRAG_API_KEY
用于配置大模型的apiKey;settings.yaml-该文件是整体的配置信息,如果我们使用的非OPENAI的官方模型和官方API,我们需要修改此配置文件来让GraphRAG按照我们指定的配置文件执行。
配置相关文件
先在.env文件中配置大模型API的Key,这个配置是全局生效的。我们在.env文件中配置完成后,不需要在settings.yaml文件中重复配置。settings.yaml中使用的默认模型为gpt-4-turbo-preview
,如果不需要修改模型以及调用的API地址,那现在就已经配置完成了,后续的配置内容可以执行忽略并直接到执行阶段。
我这里使用的是agicto 提供的APIkey(主要是新用户注册可以免费获取到10块钱的调用额度,白嫖还是挺爽的)。我在这里主要就修改了API地址和调用模型的名称,修改完成后的settings文件完整内容如下:
encoding_model: cl100k_base
skip_workflows: []
llm:api_key: ${GRAPHRAG_API_KEY}type: openai_chat # or azure_openai_chatmodel: deepseek-chatmodel_supports_json: false # recommended if this is available for your model.api_base: https://api.agicto.cn/v1# max_tokens: 4000# request_timeout: 180.0# api_version: 2024-02-15-preview# organization: <organization_id># deployment_name: <azure_model_deployment_name># tokens_per_minute: 150_000 # set a leaky bucket throttle# requests_per_minute: 10_000 # set a leaky bucket throttle# max_retries: 10# max_retry_wait: 10.0# sleep_on_rate_limit_recommendation: true # whether to sleep when azure suggests wait-times# concurrent_requests: 25 # the number of parallel inflight requests that may be madeparallelization:stagger: 0.3# num_threads: 50 # the number of threads to use for parallel processingasync_mode: threaded # or asyncioembeddings:## parallelization: override the global parallelization settings for embeddingsasync_mode: threaded # or asynciollm:api_key: ${GRAPHRAG_API_KEY}type: openai_embedding # or azure_openai_embeddingmodel: text-embedding-3-smallapi_base: https://api.agicto.cn/v1# api_base: https://<instance>.openai.azure.com# api_version: 2024-02-15-preview# organization: <organization_id># deployment_name: <azure_model_deployment_name># tokens_per_minute: 150_000 # set a leaky bucket throttle# requests_per_minute: 10_000 # set a leaky bucket throttle# max_retries: 10# max_retry_wait: 10.0# sleep_on_rate_limit_recommendation: true # whether to sleep when azure suggests wait-times# concurrent_requests: 25 # the number of parallel inflight requests that may be made# batch_size: 16 # the number of documents to send in a single request# batch_max_tokens: 8191 # the maximum number of tokens to send in a single request# target: required # or optionalchunks:size: 300overlap: 100group_by_columns: [id] # by default, we don't allow chunks to cross documentsinput:type: file # or blobfile_type: text # or csvbase_dir: "input"file_encoding: utf-8file_pattern: ".*\\.txt$"cache:type: file # or blobbase_dir: "cache"# connection_string: <azure_blob_storage_connection_string># container_name: <azure_blob_storage_container_name>storage:type: file # or blobbase_dir: "output/${timestamp}/artifacts"# connection_string: <azure_blob_storage_connection_string># container_name: <azure_blob_storage_container_name>reporting:type: file # or console, blobbase_dir: "output/${timestamp}/reports"# connection_string: <azure_blob_storage_connection_string># container_name: <azure_blob_storage_container_name>entity_extraction:## llm: override the global llm settings for this task## parallelization: override the global parallelization settings for this task## async_mode: override the global async_mode settings for this taskprompt: "prompts/entity_extraction.txt"entity_types: [organization,person,geo,event]max_gleanings: 0summarize_descriptions:## llm: override the global llm settings for this task## parallelization: override the global parallelization settings for this task## async_mode: override the global async_mode settings for this taskprompt: "prompts/summarize_descriptions.txt"max_length: 500claim_extraction:## llm: override the global llm settings for this task## parallelization: override the global parallelization settings for this task## async_mode: override the global async_mode settings for this task# enabled: trueprompt: "prompts/claim_extraction.txt"description: "Any claims or facts that could be relevant to information discovery."max_gleanings: 0community_report:## llm: override the global llm settings for this task## parallelization: override the global parallelization settings for this task## async_mode: override the global async_mode settings for this taskprompt: "prompts/community_report.txt"max_length: 2000max_input_length: 8000cluster_graph:max_cluster_size: 10embed_graph:enabled: false # if true, will generate node2vec embeddings for nodes# num_walks: 10# walk_length: 40# window_size: 2# iterations: 3# random_seed: 597832umap:enabled: false # if true, will generate UMAP embeddings for nodessnapshots:graphml: falseraw_entities: falsetop_level_nodes: falselocal_search:# text_unit_prop: 0.5# community_prop: 0.1# conversation_history_max_turns: 5# top_k_mapped_entities: 10# top_k_relationships: 10# max_tokens: 12000global_search:# max_tokens: 12000# data_max_tokens: 12000# map_max_tokens: 1000# reduce_max_tokens: 2000# concurrency: 32
执行并构建图索引
此流程是GraphRAG的核心流程,即构建基于图的知识库用于后续的问答环节,通过以下代码即可触发执行。
python -m graphrag.index
基于微软在论文中提到的实现思路,执行过程GraphRAG主要实现了如下功能:
- Source Documents → Text Chunks:将源文档分割成文本块。
- Text Chunks → Element Instances:从每个文本块中提取图节点和边的实例。
- Element Instances → Element Summaries:为每个图元素生成摘要。
- Element Summaries → Graph Communities:使用社区检测算法将图划分为社区。
- Graph Communities → Community Summaries:为每个社区生成摘要。
- Community Summaries → Community Answers → Global Answer:使用社区摘要生成局部答案,然后汇总这些局部答案以生成全局答案。
整体执行耗时与具体的文本大小有关。我这个例子整体耗时大概20分钟,耗费人民币大约4块钱。执行过程中的输出如下:
🚀 Reading settings from settings.yaml
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
🚀 create_base_text_unitsid chunk ... document_ids n_tokens
0 5fe95645e8592dc5146ae4e6e2343ad4 \n附:每天更新最新最全的小说:飞马书屋(FEIMASW.COM)\n\n《太白金星有点烦》... ... [764c0e80c3fc53191ccd9e87ad9e4803]
300
1 e91ee08e3684833d1dd3cb26679a8e6a 歪斜斜落在殿旁台阶上。\n李长庚从鹤背上跳下来,猫腰检查了一下。台阶倒没什么事,只是仙鹤的右... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 300
2 7eea0da373e721b9f87ad6c7c05565de 同期飞升的神仙早换成了更威风的神兽坐骑,只有李长庚念旧,一直骑着这头老鹤四处奔波。\n李长庚... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 300
3 d0fbd3139f977d98891f5aeae2ac9180 形了。\n“您回来啦?” 织女头也没抬,专心看着宝鉴。\n“嗯!回来了。”\n李长庚端起童子... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 300
4 ab349a2200a3878ba2a340c71ba1641f 来泡,平白被自己的牛饮糟蹋了。\n李长庚嘬了嘬牙花子,悻悻坐下,把一沓玉简文书从怀里取出来。... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 300
.. ... ... ... ... ...
214 7f8d6ded30cb1488837df6102c77cab4 旅游。编辑说,买ps5也不能报哦。我说鹓雏非梧桐不止,非练实不食,非醴泉不饮,会看得上你这点... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 300
215 73b2cf432f11036b715a7ced295a6091 《两京十五日》之后,我也是写了个短篇《长安的荔枝》休息,权当运动之后的拉伸。\n最初我并没打... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 300
216 1a10c703e1637de884a1fad7f109a50b 头一看,好嘛,居然有十万字。\n也好,尽兴了,疲惫一扫而空,这波不亏。\n有朋友问我,你是不... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 300
217 239fe13a155eb285cebc6938559cf0e9 味,也不合心意。\n当然,这种乘兴而写的东西,神在意前,一气呵成,固然写得舒畅,细节不免粗糙... ...
[764c0e80c3fc53191ccd9e87ad9e4803] 214
218 b9fb2d6193b2840cdce5a3cf25542ca7 凑个整,不然心里难受。\n\n ... [764c0e80c3fc53191ccd9e87ad9e4803] 14[877 rows x 5 columns]
🚀 create_base_extracted_entitiesentity_graph
0 <graphml xmlns="http://graphml.graphdrawing.or...
🚀 create_summarized_entitiesentity_graph
0 <graphml xmlns="http://graphml.graphdrawing.or...
🚀 create_base_entity_graphlevel clustered_graph
0 0 <graphml xmlns="http://graphml.graphdrawing.or...
1 1 <graphml xmlns="http://graphml.graphdrawing.or...
2 2 <graphml xmlns="http://graphml.graphdrawing.or...
3 3 <graphml xmlns="http://graphml.graphdrawing.or...
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
🚀 create_final_entitiesid name ... text_unit_ids description_embedding
0 b45241d70f0e43fca764df95b2b81f77 "飞马书屋" ... [159e9102707eeaef1f9188407e428111, 45e28cf587e... [0.008881675079464912, 0.012866131030023098, -...
1 4119fd06010c494caa07f439b333f4c5 "马伯庸" ... [5fe95645e8592dc5146ae4e6e2343ad4] [0.03241756930947304, 0.03757039085030556, -0....
2 d3835bf3dda84ead99deadbeac5d0d7d "太白金星李长庚" ... [5fe95645e8592dc5146ae4e6e2343ad4] [0.002768812933936715, 0.020227784290909767,
-...
3 077d2820ae1845bcbb1803379a3d1eae "启明殿" ... [02c57ca370b4c0316a20148d00723bac, 046ed708031... [0.01269223727285862, 0.026068691164255142, 0....
4 3671ea0dd4e84c1a9b02c5ab2c8f4bac "《太白金星有点烦》" ... [5fe95645e8592dc5146ae4e6e2343ad4, 7f8d6ded30c... [0.003794945077970624, 0.016000036150217056,
-...
.. ... ... ... ... ...
207 7ea0bc1467e84184842de2d5e5bdd78e "《长安的荔枝》" ... [7f8d6ded30cb1488837df6102c77cab4] [0.012446477077901363, 0.005391148384660482,
0...
208 056f23eb710f471393ae5dc417d83fd9 "两京十五日" ... [73b2cf432f11036b715a7ced295a6091] [0.021373916417360306, -0.0032437569461762905,...
209 e1ae27016d63447a8dfa021370cba0fa "长安的荔枝" ... [73b2cf432f11036b715a7ced295a6091] [0.022816641256213188, -0.0042687226086854935,...
210 f8c10f61a8f344cea7bdafa2d8af14b8 "新书" ... [239fe13a155eb285cebc6938559cf0e9] [0.05925222113728523, 0.02118016593158245, -0....
211 aa7d003f25624e19bc88d3951d4dc943 "读者" ... [239fe13a155eb285cebc6938559cf0e9] [0.0453583225607872, 0.020338334143161774, -0....[851 rows x 8 columns]
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/datashaper/engine/verbs/convert.py:72: FutureWarning: errors='ignore' is deprecated and
will raise in a future version. Use to_datetime without passing `errors` and catch exceptions explicitly insteaddatetime_column = pd.to_datetime(column, errors="ignore")
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/datashaper/engine/verbs/convert.py:72: UserWarning: Could not infer format, so each
element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.datetime_column = pd.to_datetime(column, errors="ignore")
🚀 create_final_nodeslevel title type description ... graph_embedding top_level_node_id x y
0 0 "飞马书屋" "ORGANIZATION" 飞马书屋是一个多功能的在线阅读平台,其域名为FEIMASW.COM。作为一个组织,飞马书屋不... ... None
b45241d70f0e43fca764df95b2b81f77 0 0
1 0 "马伯庸" "PERSON" "马伯庸是一位小说作者,著有《太白金星有点烦》。" ... None
4119fd06010c494caa07f439b333f4c5 0 0
2 0 "太白金星李长庚" "PERSON" "太白金星李长庚是小说《太白金星有点烦》中的主要角色,最近感到烦恼。" ... None
d3835bf3dda84ead99deadbeac5d0d7d 0 0
3 0 "启明殿" "GEO" 启明府是位于仙界的一个重要组织,与三官府、二十八星宿相当,显示了其在仙界中的地位。李长庚在此... ... None
077d2820ae1845bcbb1803379a3d1eae 0 0
4 0 "《太白金星有点烦》" "EVENT" 《太白金星有点烦》是由马伯庸所著的一部小说,讲述了太白金星李长庚的故事。这部作品是作者创作的... ...
None 3671ea0dd4e84c1a9b02c5ab2c8f4bac 0 0
... ... ... ... ... ... ... ... .. ..
3399 3 "《长安的荔枝》" "EVENT" "作者在完成《两京十五日》后创作的短篇作品,作为休息和拉伸。" ... None
7ea0bc1467e84184842de2d5e5bdd78e 0 0
3400 3 "两京十五日" "EVENT" "《两京十五日》是一个文学作品,作者在此之后创作了另一个短篇《长安的荔枝》。" ... None
056f23eb710f471393ae5dc417d83fd9 0 0
3401 3 "长安的荔枝" "EVENT" "《长安的荔枝》是作者在创作《两京十五日》后写的一个短篇,作为休息和创作的延续。" ... None
e1ae27016d63447a8dfa021370cba0fa 0 0
3402 3 "新书" "EVENT" "新书发布是一个即将发生的事件,作者希望得到读者的支持和关注。" ... None
f8c10f61a8f344cea7bdafa2d8af14b8 0 0
3403 3 "读者" ... None aa7d003f25624e19bc88d3951d4dc943 0 0[3404 rows x 14 columns]
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
🚀 create_final_communitiesid title level raw_community relationship_ids text_unit_ids
0 0 Community 0 0 0 [1c97184ce5ea4049be417a3fd125357b, 13a044c4043... [159e9102707eeaef1f9188407e428111,45e28cf587e6...
1 2 Community 2 0 2 [8d9ded5fc9cf4c4faba8c6c8cd50e2f4, 595a841aa60... [02c57ca370b4c0316a20148d00723bac,046ed708031c...
2 4 Community 4 0 4 [5a224002ecbc4725abeb5a424aaca6a6, 8826a17bbda... [d0fbd3139f977d98891f5aeae2ac9180, 27248272776...
3 3 Community 3 0 3 [ea465e5cd92247829f52ff0c8591d1bb, 2dbac25b512... [003906d4aeb4b30451d6b15477f474cf,00aa40cc8961...
4 6 Community 6 0 6 [40c2425cb1c34c1591f7cb89f9f5e0bf, 7cf59650687... [0c08b05560ec3763c4eef3215d9de406,1bf7f3f6d2d8...
.. ... ... ... ... ... ...
167 171 Community 171 3 171 [cc08fc303cdc4177ad77e6e7d3d15cfd, 318a9d64ba7... [0110b1a44d2939f061fabdca3c0c822a,050f809899ba...
168 169 Community 169 3 169 [22dc64e73efe47c1be1be0552c3e935a, 0a983d6c050... [13318cc421ba835d8ee409100f7e3c43,4c0646412c3c...
169 166 Community 166 3 166 [2edf3e83c1c64da393d5206ce5b352a3, 58ff8f61ba2... [1a10c703e1637de884a1fad7f109a50b,d25d9589f7d4...
170 168 Community 168 3 168 [6104e6eabe444d6195ec6efc79a2d618, f7bdce302b5... [06047f1634e84ec122354736d0da0512,2cd2d62cc35c...
171 170 Community 170 3 170 [1268f164ec404b48a520fe672bca0f16, 2456d7a68d0... [4502bb159a6b1ae4429141760179b1f3,4a14da17885b...[172 rows x 6 columns]
🚀 join_text_units_to_entity_idstext_unit_ids entity_ids id
0 159e9102707eeaef1f9188407e428111 [b45241d70f0e43fca764df95b2b81f77, 19a7f254a5d... 159e9102707eeaef1f9188407e428111
1 45e28cf587e6d50704fd6ed866278782 [b45241d70f0e43fca764df95b2b81f77, 077d2820ae1... 45e28cf587e6d50704fd6ed866278782
2 4b8b97e111eb9dc6d262c5ec7eb60801 [b45241d70f0e43fca764df95b2b81f77, 19a7f254a5d... 4b8b97e111eb9dc6d262c5ec7eb60801
3 5fe95645e8592dc5146ae4e6e2343ad4 [b45241d70f0e43fca764df95b2b81f77, 4119fd06010... 5fe95645e8592dc5146ae4e6e2343ad4
4 6fe888799b2e26cd911859f9c31f85d6 [b45241d70f0e43fca764df95b2b81f77, 19a7f254a5d... 6fe888799b2e26cd911859f9c31f85d6
.. ... ... ...
871 73b2cf432f11036b715a7ced295a6091 [47f6d6573cf34e1096c95e36251dd60c, 056f23eb710... 73b2cf432f11036b715a7ced295a6091
872 da06f0769e85e52a06407bdf7dec4c2c [3f3a2d7aa1294116814f0b4d89baa23d, bbdd53a15e9... da06f0769e85e52a06407bdf7dec4c2c
873 239fe13a155eb285cebc6938559cf0e9 [5d398b88ee4242a59c32feb188683ec3, f8c10f61a8f... 239fe13a155eb285cebc6938559cf0e9
874 7837d3a4069066d3a313a050c5401a77 [bbdd53a15e99452a9deff05d1de2d965, d2ed972353a... 7837d3a4069066d3a313a050c5401a77
875 27b95fa0e9192d3c4088bbdd1d820b5c [9532cf83e9324ea0a46e5ac89bac407d, 8919fa72a9e... 27b95fa0e9192d3c4088bbdd1d820b5c[876 rows x 3 columns]
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/numpy/core/fromnumeric.py:59: FutureWarning: 'DataFrame.swapaxes' is deprecated and will
be removed in a future version. Please use 'DataFrame.transpose' instead.return bound(*args, **kwds)
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/datashaper/engine/verbs/convert.py:65: FutureWarning: errors='ignore' is deprecated and
will raise in a future version. Use to_numeric without passing `errors` and catch exceptions explicitly insteadcolumn_numeric = cast(pd.Series, pd.to_numeric(column, errors="ignore"))
🚀 create_final_relationshipssource target weight description ... human_readable_id source_degree target_degree rank
0 "飞马书屋" "《太白金星有点烦》" 1.0 "飞马书屋提供《太白金星有点烦》这部小说的最新最全版本。" ... 0
4 4 8
1 "飞马书屋" "李长庚" 4.0 李长庚是飞马书屋小说中的角色,显示他与这个组织有文学上的联系。李长庚的对话内容被记录在飞马书... ...
1 4 323 327
2 "飞马书屋" "小说更新" 1.0 "飞马书屋提供每天最新最全的小说更新服务。" ... 2 4
1 5
3 "飞马书屋" "最好看的小说" 1.0 "飞马书屋提供最好看的小说,满足读者的阅读需求。" ... 3 4
1 5
4 "马伯庸" "《太白金星有点烦》" 1.0 "马伯庸是《太白金星有点烦》这部小说的作者。" ... 4 1
4 5
... ... ... ... ... ... ... ... ... ...
1891 "编辑" "出版社" 1.0 "编辑在出版社工作,负责处理作者的稿件。" ... 1891 3 1
4
1892 "编辑" "我" 1.0 "作者与编辑之间存在关于创作内容和休息方式的交流和分歧。" ... 1892 3
3 6
1893 "我" "《长安的荔枝》" 1.0 "作者在完成《两京十五日》后创作了《长安的荔枝》作为休息。" ... 1893 3
2 5
1894 "《两京十五日》" "《长安的荔枝》" 1.0 "《长安的荔枝》是作者在《两京十五日》之后创作的短篇作品,作为休息。" ... 1894
1 2 3
1895 "新书" "读者" 1.0 "新书发布时,作者希望得到读者的支持和捧场,这是一种期待和互动的关系。" ... 1895 2
1 3[1896 rows x 10 columns]
🚀 join_text_units_to_relationship_idsid relationship_ids
0 5fe95645e8592dc5146ae4e6e2343ad4 [1c97184ce5ea4049be417a3fd125357b, ae0d3104647...
1 45e28cf587e6d50704fd6ed866278782 [13a044c404394c34af1e9b07c48aa985, 8d9ded5fc9c...
2 4b8b97e111eb9dc6d262c5ec7eb60801 [13a044c404394c34af1e9b07c48aa985, a9b900821b8...
3 a55a87d948656692651bffe4d3aa5f82 [13a044c404394c34af1e9b07c48aa985, 8d9ded5fc9c...
4 e080b0c08ed32f44c6adc344b9771781 [13a044c404394c34af1e9b07c48aa985, f8402b10349...
.. ... ...
871 613f893eee700fad17498654df3182c0 [58126221b0894f01bae564e2608b754d, 69b67d3b170...
872 239fe13a155eb285cebc6938559cf0e9 [fc757d03e1814784a3a213d87ea36e23, 21bd7045ca9...
873 b0c5905978e8e25106a43ca347427229 [9636a7d02e614d00ac8602bd65da987b, 1a315dfbb60...
874 7837d3a4069066d3a313a050c5401a77 [3fa936635320477cbb990905f5db11d6, 616436c3a00...
875 27b95fa0e9192d3c4088bbdd1d820b5c [c86a30f7f1fe4a01807dd66719394ec3, 392721fc26e...[876 rows x 2 columns]
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/graphrag/index/graph/extractors/community_reports/prep_community_report_context.py:57:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copyinvalid_context_df[schemas.CONTEXT_STRING] = _sort_and_trim_context(
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/graphrag/index/graph/extractors/community_reports/utils.py:16: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copydf[schemas.CONTEXT_SIZE] = df[schemas.CONTEXT_STRING].apply(lambda x: num_tokens(x))
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/graphrag/index/graph/extractors/community_reports/prep_community_report_context.py:61:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copyinvalid_context_df[schemas.CONTEXT_EXCEED_FLAG] = 0
🚀 create_final_community_reportscommunity full_content ... full_content_json id
0 164 # 天廷与神话组织\n\n天廷是一个神话中的组织,负责管理仙界事务和财务,与多个神话人物和地... ... {\n "title": "\u5929\u5ef7\u4e0e\u795e\u8bd...
7d7397c8-e65a-40ca-8f5e-c8ee95ec9bb0
1 166 # 宝象国与八十一难\n\n宝象国是一个地理位置,涉及多个重要事件和人物,包括玄奘、李长庚、... ... {\n "title": "\u5b9d\u8c61\u56fd\u4e0e\u516...
d9067bdd-b669-4ce7-b2e8-de33e6487bcf
2 168 # 阿傩与黄风怪的复杂关系\n\n该社区围绕阿傩和黄风怪展开,涉及多个角色和组织,如正途弟子... ... {\n "title": "\u963f\u50a9\u4e0e\u9ec4\u98c...
7288eb84-717e-46aa-8ccf-90432682a374
3 169 # 三星洞与石猴社区\n\n该社区以三星洞为核心组织,涉及多个关键实体如石猴、六耳、冒名顶替... ... {\n "title": "\u4e09\u661f\u6d1e\u4e0e\u77f...
4db3be55-ad2a-4e7e-a311-29d4743a71be
4 170 # 通臂与三星洞社区\n\n该社区围绕通臂展开,涉及多个关键实体如三星洞都管、孙悟空、六耳等... ... {\n "title": "\u901a\u81c2\u4e0e\u4e09\u661...
d993b5ec-6ec2-4d66-859d-512ca93bf01c
.. ... ... ... ... ...
148 3 # 两界山与取经之旅\n\n该社区以两界山和取经之旅为核心,涉及多个关键实体如玄奘、阿傩长老... ... {\n "title": "\u4e24\u754c\u5c71\u4e0e\u53d...
d78001e2-5247-4bf9-b2af-fd2cbb109bf4
149 4 # 天庭与神话组织社区\n\n该社区以天庭为核心,涉及多个神话组织和人物,如释门、广目天王、... ... {\n "title": "\u5929\u5ead\u4e0e\u795e\u8bd...
085b720d-4f87-43a4-8a29-4a9da687789e
150 6 # 西王母与天庭关系网络\n\n该社区以西王母为核心,涉及天庭、卷帘大将、李长庚等多个关键实... ... {\n "title": "\u897f\u738b\u6bcd\u4e0e\u592...
72ae5d47-5b05-43d1-a60a-de2f92557b56
151 8 # 文殊与普贤的佛教神祇社区\n\n该社区以文殊和普贤两位佛教菩萨为核心,围绕他们的活动和互... ... {\n "title": "\u6587\u6b8a\u4e0e\u666e\u8d2...
cb782e19-0886-4bf9-93b7-bf864adfa2f3
152 9 # 护法渡劫与师徒四人\n\n该社区围绕‘护法渡劫’事件展开,涉及‘师徒四人’、‘菩萨’等关... ... {\n "title": "\u62a4\u6cd5\u6e21\u52ab\u4e0...
52ddd79d-cfa7-43d1-a070-5598db14461d[153 rows x 10 columns]
🚀 create_final_text_unitsid ... relationship_ids
0 5fe95645e8592dc5146ae4e6e2343ad4 ... [1c97184ce5ea4049be417a3fd125357b, ae0d3104647...
1 e91ee08e3684833d1dd3cb26679a8e6a ... [26c926c6016d4639b05427f01ba629f5, 8f6872eeb81...
2 7eea0da373e721b9f87ad6c7c05565de ... [8d9ded5fc9cf4c4faba8c6c8cd50e2f4, 595a841aa60...
3 d0fbd3139f977d98891f5aeae2ac9180 ... [ac80a99fda2b488285d29596dd4d1471, 67d6a3481e4...
4 ab349a2200a3878ba2a340c71ba1641f ... [904cd052ec194654bb72f4027e43daa3, 7e88fd2e835...
.. ... ... ...
872 7f8d6ded30cb1488837df6102c77cab4 ... [6bb9bed2e39c4e31a81f12479af3d16c, 7dbca0fef7d...
873 73b2cf432f11036b715a7ced295a6091 ... [2f13e93b77b84d5994605e27c17c3244, 20574c1c47c...
874 1a10c703e1637de884a1fad7f109a50b ... [e65667ec99e145fea2055d6b583cb05b, 2edf3e83c1c...
875 239fe13a155eb285cebc6938559cf0e9 ... [fc757d03e1814784a3a213d87ea36e23, 21bd7045ca9...
876 b9fb2d6193b2840cdce5a3cf25542ca7 ... None[877 rows x 6 columns]
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/datashaper/engine/verbs/convert.py:72: FutureWarning: errors='ignore' is deprecated and
will raise in a future version. Use to_datetime without passing `errors` and catch exceptions explicitly insteaddatetime_column = pd.to_datetime(column, errors="ignore")
🚀 create_base_documentsid text_units raw_content title
0 764c0e80c3fc53191ccd9e87ad9e4803 [5fe95645e8592dc5146ae4e6e2343ad4, e91ee08e368...
\n附:每天更新最新最全的小说:飞马书屋(FEIMASW.COM)\n\n《太白金星有点烦》... book.txt
🚀 create_final_documentsid text_unit_ids raw_content title
0 764c0e80c3fc53191ccd9e87ad9e4803 [5fe95645e8592dc5146ae4e6e2343ad4, e91ee08e368...
\n附:每天更新最新最全的小说:飞马书屋(FEIMASW.COM)\n\n《太白金星有点烦》... book.txt
⠋ GraphRAG Indexer
├── Loading Input (InputFileType.text) - 1 files loaded (0 filtered) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00 0:00:00
├── create_base_text_units
├── create_base_extracted_entities
├── create_summarized_entities
├── create_base_entity_graph
├── create_final_entities
├── create_final_nodes
├── create_final_communities
├── join_text_units_to_entity_ids
├── create_final_relationships
├── join_text_units_to_relationship_ids
├── create_final_community_reports
├── create_final_text_units
├── create_base_documents
└── create_final_documents
🚀 All workflows completed successfully.
基于构建的知识库进行提问
GraphRAG支持两种提问方式,“global search"和"local search”。"global search"指的是那些需要理解整个文本语料库的问题,例如“数据集的主要主题是什么?”这类问题需要一种全局性的理解和摘要,而不是仅从文本的局部区域中检索信息。相反,"local search"在论文中通常指的是文本的局部区域或文本块,这些局部区域是RAG方法检索的单元。
让GraphRAG帮我介绍下这篇文章都讲述了什么内容,执行代码如下:
python -m graphrag.query --root ../myTest --method global "这篇文章主要讲述 了什么内容?"
输出内容为:
INFO: Reading settings from ../myTest/settings.yaml
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/graphrag/query/indexer_adapters.py:71: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copyentity_df["community"] = entity_df["community"].fillna(-1)
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/graphrag/query/indexer_adapters.py:72: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copyentity_df["community"] = entity_df["community"].astype(int)
creating llm client with {'api_key': 'REDACTED,len=51', 'type': "openai_chat", 'model': 'deepseek-chat', 'max_tokens': 4000, 'request_timeout': 180.0, 'api_base': 'https://api.agicto.cn/v1', 'api_version': None, 'organization': None, 'proxy': None, 'cognitive_services_endpoint': None, 'deployment_name': None, 'model_supports_json': False, 'tokens_per_minute': 0, 'requests_per_minute': 0, 'max_retries': 10, 'max_retry_wait': 10.0, 'sleep_on_rate_limit_recommendation': True, 'concurrent_requests': 25}SUCCESS: Global Search Response: 这篇文章主要讲述了多个神话社区的故事,每个社区围绕特定的核心人物或事件展开,涉及复杂的互动关系和动态。这些社区包括玉帝与天庭神祇社orts (138, 119, 136, 93, 58, +more)]此外,文章还涉及了多个社区和事件的复杂关系和动态,涉及不同的实体如悟空、李长庚、观音等,以及他们之间的互动和影响。这些内容涵盖了从宗教到政治的多个层面,展示了每个社区的核心角色和重要事件。[Data: Reports (125, 115, 143, 71, 92, +more)]文章还详细描述了李长庚与天庭仙界的关系,他在天庭中的核心角色、与观音、孙悟空、玄奘及取经队伍的复杂关系,以及他在天庭中的多项关键职责和影响力。[Data: Reports (82)]另外,文章还围绕天庭社区的织女和瑶池展开,涉及多个神话人物和事件,包括织女在天庭的角色和影响力、瑶池在天庭社区中的地位、织女与牛郎的家庭关系、织女对玄奘取经的兴趣以及织女与李长庚的工作关系。[Data: Reports (95)]最后,文章还涉及了文殊与普贤的佛教神祇社区,围绕他们的活动和互动展开,包括取经队伍的选拔、试禅心活动以及与李长庚的复杂互动。[Data: Reports (60)]
同样的问题,我们使用"local search"的方式再问一下,执行代码
python -m graphrag.query --root ../myTest --method local "这篇文章主要讲述了什么内容?"
输出内容为:
INFO: Reading settings from ../myTest/settings.yaml
[2024-07-07T13:58:58Z WARN lance::dataset] No existing dataset at /home/xinfeng/PycharmProjects/graphrag/myTest/lancedb/description_embedding.lance, it will be created
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/graphrag/query/indexer_adapters.py:71: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copyentity_df["community"] = entity_df["community"].fillna(-1)
/home/xinfeng/miniconda3/envs/graphrag-new/lib/python3.11/site-packages/graphrag/query/indexer_adapters.py:72: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copyentity_df["community"] = entity_df["community"].astype(int)
creating llm client with {'api_key': 'REDACTED,len=51', 'type': "openai_chat", 'model': 'deepseek-chat', 'max_tokens': 4000, 'request_timeout': 180.0, 'api_base': 'https://api.agicto.cn/v1', 'api_version': None, 'organization': None, 'proxy': None, 'cognitive_services_endpoint': None, 'deployment_name': None, 'model_supports_json': False, 'tokens_per_minute': 0, 'requests_per_minute': 0, 'max_retries': 10, 'max_retry_wait': 10.0, 'sleep_on_rate_limit_recommendation': True, 'concurrent_requests': 25}
creating embedding llm client with {'api_key': 'REDACTED,len=51', 'type': "openai_embedding", 'model': 'text-embedding-3-small', 'max_tokens': 4000, 'request_timeout': 180.0, 'api_base': 'https://api.agicto.cn/v1', 'api_version': None, 'organization': None, 'proxy': None, 'cognitive_services_endpoint': None, 'deployment_name': None, 'model_supports_json': None, 'tokens_per_minute': 0, 'requests_per_minute': 0, 'max_retries': 10, 'max_retry_wait': 10.0, 'sleep_on_rate_limit_recommendation': True, 'concurrent_requests': 25}SUCCESS: Local Search Response: 这篇文章主要讲述了李长庚在天庭仙界中的核心角色及其与多个关键人物的复杂关系,以及他在取经任务中的重要作用。以下是详细的概述:### 李长庚在天庭中的核心角色
李长庚在天庭中担任多项关键职责,包括启明司的主持和护法锦囊设计等。他的行为和决策直接影响天庭的稳定和取经任务的进展。李长庚的复杂角色和多重职责使得他在天庭中的影响力极大,同时也带来了较高的潜在风险。[Data: Entities (5), Relationships (49, 82, 39, 58, 83, 138, 155, 74, 46)]### 李长庚与观音的复杂关系
李长庚与观音之间的关系复杂且多层次,涉及合作、争论和策略性互动。他们共同经历了多次困难,彼此之间有着默契的默契。李长庚通过无形的影响来应对观音的威胁,而观音对李长庚的安排感到不满。这种复杂的关系对取经任务的进展有着直接的影响。[Data: Relationships (49)]### 李长庚与孙悟空的密切关系
李长庚与孙悟空之间的关系复杂且密切,涉及指导、关心和策略性互动。孙悟空对李长庚的修行状态和关心的事情表示理解,而李长庚则提醒孙悟空注意因果。两人之间的直接交流和合作对取经任务的进展至关重要。[Data: Relationships (82)]### 李长庚与玄奘的互动
李长庚与玄奘之间存在着一系列复杂的关系和互动。李长庚正在策划一个与玄奘旅程相关的事件,这表明他对玄奘的经历和成就有着浓厚的兴趣。两人之间的争议和合作对取经任务的进展有着重要影响。[Data: Relationships (39)]### 李长庚与取经队伍的关系
李长庚与取经队伍的关系复杂且充满关怀。尽管他本人并未直接参与取经队伍的活动,但他的讨论发生在取经队伍活动的背景下。李长庚为取经队伍护法渡劫,显示出他对该组织的忠诚和支持。[Data: Relationships (58)]这篇文章通过详细描述李长庚在天庭中的角色及其与观音、孙悟空、玄奘和取经队伍的关系,展现了他在天庭和取经任务中的核心地位和重要作用。
对比之下可以看出,"local search"的查询方式确实会透出更多细节信息。
以上就是这篇文章的主要内容,第二篇文章我会找一个典型的文章,对比下GraphRAG和常规RAG在实际场景中的使用效果,第三篇文章会介绍下GraphRAG的主要实现原理(工作日通常会加班,下班较晚,回家后需要陪陪家人,因此更新可能会慢点,预计下周末出第二篇)。如果想看更多的理论细节,推荐阅读https://arxiv.org/pdf/2404.16130。
感谢大家能看到最后,欢迎大家有时间也来我的个人博客看看,更新的内容会更多些。不来也没关系,我觉得有价值的内容也会继续在CSDN上更新。
相关文章:
微软开源GraphRAG的使用教程-使用自定义数据测试GraphRAG
微软在今年4月份的时候提出了GraphRAG的概念,然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前,已有6900Star。 安装教程 官方推荐使用Python3.10-3.12版本,我使用Python3.10版本安装时,在…...
C++ 中的字面量类型定义
在 C 中,字面量类型(Literal Type)是指可以作为字面量使用的类型。字面量是指代码中直接写出的常量值,比如整数 42、浮点数 3.14、字符串 "hello" 等。而字面量类型则是支持创建这些字面量的类型。 C 中的字面量类型定…...
LeetCode:101. 对称二叉树
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输…...
Docker Compose 配置指南
目录 1. Docker Compose 配置1.1 基本配置结构1.2 docker-compose.yml 的各部分1.3 常用配置选项 2. Docker Compose 使用方法2.1 创建 Docker Compose 配置文件2.2 启动服务2.3 查看容器状态2.4 查看服务日志2.5 停止服务2.6 重新构建服务 3. Docker Compose 常用命令3.1 dock…...
【Linux开发工具】自动化构建-make/Makefile
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux开发工具】gcc和g 🔖流水不争,争的是滔滔不 一、make和Makefile简介1.1 什么是…...
VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)
名人说:一点浩然气,千里快哉风。—— 苏轼《水调歌头》 创作者:Code_流苏(CSDN) 目录 一、Python环境安装二、VScode下载及安装三、VSCode配置Python环境四、运行测试五、背景图设置 很高兴你打开了这篇博客,更多详细的安装教程&…...
Python 异步协程:从 async/await 到 asyncio 再到 async with
在 Python 3.8 以后的版本中,异步编程变得越来越重要。本文将系统介绍 Python 标准库中的异步编程工具,带领大家掌握 async/await 语法和 asyncio 的使用。 从一个简单的场景开始 假设我们在处理一些耗时的 I/O 操作,比如读取多个文件或处理…...
矩阵-向量乘法的行与列的解释(Row and Column Interpretations):中英双语
本文是学习这本书的笔记 网站是:https://web.stanford.edu/~boyd/vmls/ 矩阵-向量乘法的行与列的解释 矩阵-向量乘法(Matrix-Vector Multiplication)是线性代数中的基本操作,也是机器学习、数据科学和工程中常用的数学工具。本文…...
针对超大规模病理图像分析!华中科技大学提出医学图像分割模型,提高干燥综合征诊断准确性
口干、眼干、皮肤干,每天伴有不明原因的肌肉酸痛和全身乏力,如果以上症状你「中招」了,除了考虑冬季天气干燥外,还应该警惕一种常见却总是被我们忽视的疾病——干燥综合征 (Sjgren’s Syndrome, SS)。 干燥综合征是以外分泌腺高度…...
混合开发环境---使用编程AI辅助开发Qt
文章目录 [toc]1、说明2、演示视频 1、说明 新时代的浪潮早就已经来临,上不了船的人终将被抛弃,合理使用AI辅助开发、提升效率是大趋势 注意:不要被AI奴隶 合理使用AI辅助编程,十倍提升效率。 大部分的编程AI都有vs code插件&…...
Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定
本文仅作学习交流,不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本:Unity6 模板:3D 核心 渲染管线:URP ------------------------------…...
[前端]HTTP库Axios
一、Axios简介 Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 node.js 环境。它是一个流行的 JavaScript 库,用于发起 HTTP 请求,如 GET、POST、DELETE 等。Axios 提供了易于使用的 API,支持请求和响应的拦截、转换数据格…...
Excel中index()函数
函数功能概述 INDEX 函数用于返回表格或区域中的值或对值的引用。它可以根据指定的行和列的位置从一个单元格区域中提取数据。这个函数有两种形式:数组形式和引用形式。语法结构(数组形式) INDEX(array, row_num, column_num)array࿰…...
linux-----文件命令
文件和目录的基本概念 文件类型: 普通文件:这是最常见的文件类型,用于存储数据,如文本文件、二进制文件等。文本文件可以用文本编辑器打开并查看内容,二进制文件则包含机器可执行的代码或其他特定格式的数据。目录文件…...
lua dofile 传参数
cat 1.lua arg[1] 111 arg[2] 222 dofile(./2.lua) cat 2.lua print("First argument is: " .. arg[1]) print("Second argument is: " .. arg[2]) 执行 lua 1.lua,结果为: First argument is: 111 Second argument is: 222 l…...
【ETCD】【实操篇(二)】如何从源码编译并在window上搭建etcd集群?
要在 Windows 上编译 etcd 及 etcdctl 工具,并使用 bat 脚本启动 etcd 集群,首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd 3.5 源码开始编译和启动 etcd 集群的详细步骤: 目录 1. 安装 Go 环境2. 获取 etcd 源码3. 编译 etcd…...
重温设计模式--备忘录模式
文章目录 备忘录模式(Memento Pattern)概述定义: 作用:实现状态的保存与恢复支持撤销 / 恢复操作 备忘录模式UML图备忘录模式的结构原发器(Originator):备忘录(Memento)&…...
如何借助边缘智能网关实现厂区粉尘智能监测告警
在诸如木制品加工、纺织品加工、塑料橡胶制品加工等多种工业生产场景中,粉尘问题的隐患和风险不可小觑。如果缺少对生产环境中粉尘的监测和管理,可能发生易燃易爆、环境污染和工人尘肺等生产事故。 针对工业场景中的粉尘状况监测、管理及预警,…...
解析mysqlbinlog
一、前置设置 ps -ef | grep mysql 查看mysql进程对应的安装目录 需设置mysql binlog日志模式为 ROW 二、执行命令 [rootlocalhost bin]# mysqlbinlog --verbose --base64-outputdecode-rows /usr/local/mysql/data/binlog.000069 > 1.sql 查看文件具体内容...
【gym】理解gym并测试gym小游戏CartPole (一)
一、gym与文件位置的联合理解 import gym import inspect# 加载 CliffWalking 环境 env gym.make(CliffWalking-v0)# 获取环境的类 env_class type(env)# 获取环境类所在的文件路径 file_path inspect.getfile(env_class)print(f"The source code for CliffWalking-v0…...
【jvm】内存泄漏的8种情况
目录 1. 说明2. 静态集合类持有对象引用3. 单例模式4. 内部类持有外部类5. 未关闭的连接6. 变量不合理的作用域7. 改变对象的哈希值8. 缓存Cache泄漏9. 监听器和回调 1. 说明 1.内存泄漏(Memory Leak)指的是程序中动态分配的内存由于某种原因没有被释放…...
android:sharedUserId 应用进程声明介绍
背景 adb install 安装系统软件报错,原因是签名不一致,进程改变。 代码分析 AndroidManifest.xml 定义的 android:sharedUserId 应用归属进程不同,从phone切换到system。 初始配置 <manifest xmlns:android="http://schemas.android.com/apk/res/android"c…...
WPSJS:让 WPS 办公与 JavaScript 完美联动
随着办公自动化需求的日益增长,WPS Office 推出了 WPSJS,这是一款强大的开发者工具,允许开发者通过 JavaScript 脚本与 WPS 办公软件进行互动。无论是在表格中自动填充数据、在文档中修改格式,还是在演示文稿中插入动态内容&#…...
【Linux进程】进程间通信(共享内存、消息队列、信号量)
目录 前言 1. System V IPC 2. 共享内存 系统调用接口 shmget ftok shmat shmdt shmctl 共享内存的读写 共享内存的描述对象 3. 消息队列 msgget msgsnd msgctl 消息队列描述对象 4. 信号量 系统调用接口 semget semctl 信号量描述对象 5. 系统层面IPC资源 6.…...
负载均衡的原理
负载均衡(Load Balancing)是一种计算机技术,用于在多个服务器、网络连接、计算资源之间合理分配工作负载,以提升应用程序的可用性、性能和可扩展性,以下是详细介绍: 工作原理 流量分配:负载均衡…...
Flash Attention
op融合 原始方法: 痛点:多次读取、写入显存。 解决:中间结果不保存,1个kernel顺序算完多个操作。 反向传播时用到这些中间结果要求导,怎么办? 答:类似activation checkpointing,重新…...
Craft CMS 模板注入导致 Rce漏洞复现(CVE-2024-56145)(附脚本)
0x01 产品描述: Craft CMS 是一个灵活且强大的内容管理系统(CMS),专为创意团队和开发人员设计,提供高度可定制、直观且性能优越的网站和内容管理解决方案。它以用户友好的界面、强大的插件生态系统以及支持现代web开发最佳实践的特性而闻名0x02 漏洞描述: 由于模板…...
步进电机位置速度双环控制实现
步进电机位置速度双环控制实现 野火stm32电机教学 提高部分-第11讲 步进电机位置速度双环控制实现(1)_哔哩哔哩_bilibili PID模型 位置环作为外环,速度环作为内环。设定目标位置和实际转轴位置的位置偏差,经过位置PID获得位置期望,然后讲位置期望(位置变化反映了转轴的速…...
Sigrity Optimize PI CapGen仿真教程文件路径
为了方便读者能够快速上手和学会Sigrity Optimize PI和 Deacap Generate 的功能,将Sigrity Optimize PI CapGen仿真教程专栏所有文章对应的实例文件上传至以下路径 https://download.csdn.net/download/weixin_54787054/90171471?spm1001.2014.3001.5503...
open Feign日志输出
openFeign默认是没有日志输出的,只有在open Feign所在的包的级别达到debug才会有输出,而且级别有四级。 四种日志级别: OpenFeign只会在FeignClient所在包的日志级别为DEBUG时,才会输出日志。而且其日志级别有4级: NON…...
进程间关系与守护进程
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 进程间关系与守护进程 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 进程组 什…...
C++设计模式:组合模式(公司架构案例)
组合模式是一种非常有用的设计模式,用于解决**“部分-整体”**问题。它允许我们用树形结构来表示对象的层次结构,并且让客户端可以统一地操作单个对象和组合对象。 组合模式的核心思想 什么是组合模式? 组合模式的目的是将对象组织成树形结…...
ubuntu 安装docker
Step1:更新系统软件包 sudo apt update Step2:安装依赖包【用于通过HTTPS来获取仓库】 sudo apt install apt-transport-https ca-certificates curl software-properties-common Step3:添加Docker官方GPG密钥 sudo -i curl -fsSL https://…...
PSDK的编译与ROS包封装
本文档讲述在NIVIDIA开发板上使用大疆提供的Payload SDK获取无人机实时GPS信息的方法,以及基于Payload SDK发布ROS GPS话题信息的方法。 文章目录 0 实现目标1 Payload SDK1.1 PSDK 源码的编译1.2 PSDK 的使用 2 遥测数据的读取2.1 示例代码结构2.2 读取机载GPS信息…...
【工作流】工作顺序
背景 当时的情况是:没有产品经理,后端直接和需求方对接;前端只能短时间投入大部分时间要忙别的;只有3个角色:需求方,后端,前端; 当时直接执行的 直接使用会议了解需求,…...
Unity2021.3.16f1可以正常打开,但是Unity2017.3.0f3却常常打开闪退或者Unity2017编辑器运行起来就闪退掉
遇到问题: 从今年开始,不知道咋回事,电脑上的Unity2017像是变了个人似得,突然特别爱闪退掉,有时候还次次闪退,真是让人无语,一直以来我都怀疑是不是电脑上安装了什么别的软件了,导致…...
Java基础面试题20:Java语言sendRedirect()和forward()方法有什么区别?
Java基础面试题:Java语言sendRedirect()和forward()方法有什么区别? 在 Java Web 开发中,sendRedirect() 和 forward() 是两个非常常用的方法,但它们有一些核心区别。我们来用最简单的方式给你解释清楚。 一、sendRedirect() 和 …...
2、光同步数字传送网的特点
同步复用 光同步数字传送网(SDH)采用同步复用方式。它将多个低速信号复用成高速信号,与准同步数字体系(PDH)的异步复用不同。在 SDH 中,各支路信号与复用后的高速信号是同步的,这种同步复用的方…...
3.4 stm32系列:定时器(PWM、定时中断)
一、定时器概述 1.1 软件定时原理 使用纯软件(CPU死等)的方式实现定时(延时)功能; 不精准的延迟: /* 微秒级延迟函数* 不精准* stm32存在压出栈过程需要消耗时间* 存在流水线,执行时间不确定…...
【环境搭建】Python、PyTorch与cuda的版本对应表
一个愿意伫立在巨人肩膀上的农民...... 在深度学习的世界里,选择合适的工具版本是项目成功的关键。CUDA、PyTorch和Python作为深度学习的三大支柱,它们的版本匹配问题不容忽视。错误的版本组合可能导致兼容性问题、性能下降甚至项目失败。因此࿰…...
【经验总结】AUTOSAR架构下基于TJA1145收发器偶发通信丢失不可恢复问题分析
目录 前言 正文 1.问题描述 2.尝试问题复现 3.尝试问题定位 4.直接原因 5.总结 前言 在《【CAN通信】TJA1145收发器重要功能介绍》一文中我们详细介绍了TJA1145收发器的重点内容,最近在开发测试过程中就遇到了一个CAN通信丢失且不可恢复的偶发问题,解决该问题的思路和…...
帝国CMS:如何去掉帝国CMS登录界面的认证码登录
如果在安装的时候,不小心选中了认证码选项,那么后面登录帝国后台都会要求输入认证码才能登录,如何去除这个设置呢,笔者以古诗词网 www.gushichi.com为例,为大家举例说明! 去除步骤如下: 1.前往…...
CTF入门:单主机渗透——flag_XEE的常规思路
学习通过技术手段获取目标主机中预置的5个flag值。 在kali操作机中打开终端,然后使用nmap工具对目标机器进行端口扫描: nmap -sT 192.168.12.26 访问80端口。 网站首页是一个登录框,在界面上有一个提示的标签“弱口令”,说…...
Note2024122303_Code2Docu插件使用
Note2024122303_Code2Docu插件初使用V1.0 step1: 安装 跳转链接 文档阅读:下载文档阅读。 根据文档内容,大概知道首先下载并安装插件: 资料说明和安装方式: 意思是: 下载文件后直接运行 Code2Docu_Installati…...
深度学习之目标检测篇——残差网络与FPN结合
特征金字塔多尺度融合特征金字塔的网络原理 这里是基于resnet网络与Fpn做的结合,主要把resnet中的特征层利用FPN的思想一起结合,实现resnet_fpn。增强目标检测backone的有效性。代码实现如下: import torch from torch import Tensor from c…...
共模电感的工作原理
共模电感也称为共模扼流线圈,是一种抑制共模干扰的器件,它是由两个尺寸相同,匝数相同的线圈对称地绕制在同一个铁氧体环形磁芯上,形成的一个四端器件。当共模电流流过共模电感时,磁芯上的两个线圈产生的磁通相互叠加&a…...
mysql高阶语句
mysql高阶语句 1.对结果排序 SELECT id,name,score FROM info; #由于对id设置了主键约束,默认排序按id的大小升序排序 select name,score from info order by score; #默认按升序(从小到大排序) select name,score from info order by score…...
sfnt-pingpong -测试网络性能和延迟的工具
sfnt-pingpong 是一个用于测试网络性能和延迟的工具,通常用于测量不同网络环境下的数据包传输性能、吞吐量、延迟等指标。 它通常是基于某种网络协议(如 TCP)执行“ping-pong”式的测试,即客户端和服务器之间相互发送数据包&…...
PostgreSQL 的历史
title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能强大且广泛使用的开源关系型数据库管理系统。其历史可以追溯到1986年,当时由加州大学伯克利分校的一个研究团队开发。文章将深入探讨 PostgreSQL 的起源、…...
【express-generator】01-安装和基本使用
创建和初始化项目 安装 npm i -g express-generator 创建一个express应用程序 //express 文件名 express blog_demo 跟着提示 cd blog_demo //移动到该目录下 npm install //初始化 npm start //启动服务 在页面打开localhost:3000(默认启动的端口)…...