大模型与图数据库RAG通俗流程拆解

图构建

(略)
neo4j、tugraph 等均可,不影响 GraphRAG 核心框架

模型

  • 向量化模型 bce-embedding-base_v1
  • 重排序模型 bce-reranker-base_v1
  • 大语言模型 Qwen/Qwen2.5-32B-Instruct
  • 图数据库 tugraph
  • 索引 faiss

核心流程

这个调用链日志展示了一个完整的问答系统处理用户输入“百草园里有什么”的过程。本项目使用和参考了开源项目茴香豆。
以下是调用链的梳理,确保不遗漏任何步骤:

1. 意图识别

  • 步骤: 根据用户输入判断意图,用户输入为“百草园里有什么”,意图枚举有“query”、“topic”、“introduction”,主题枚举有“self-introduction”、“other”。
  • 日志:
LLM Input Parameters: {"model": "Qwen/Qwen2.5-32B-Instruct", "messages": [{"role": "user", "content": "You are a text expert, proficient in semantic role labeling, sentiment analysis, and intent recognition for sentences.\n\n## Objective\nTo assist users in achieving their goals by following instructions and providing helpful responses while ensuring content safety and compliance.\n## Capabilities and Limitations\n- You are skilled in both Chinese and English conversations.\n- You have the ability to handle long texts, supporting up to a total of 400,000 characters in multiple rounds of input and output. Therefore, you support long text writing, translation, complete code writing, and other tasks.\n- You have the capability to search. When a user's question can be answered by combining search results, these results will be provided to you; when search results are available, you should combine these results to provide better answers to users. If there is conflicting information from different sources in the search results, you should analyze and compare the information to select the correct information to answer the user.\n## Instruction Following and Providing Useful Replies\n- Under the premise of ensuring safety and compliance, pay attention to and follow each instruction mentioned in the user's question, and you must give a direct answer to the user's questions. If the instruction exceeds your capabilities, politely tell the user.\n- Please strictly follow instructions, speak concisely, and avoid verbosity.\n- [Important!] For numerical comparison questions, please analyze step by step before answering.\n## Output Format and Language Style Requirements\n- Use \\(...\\) or \\[...\\] to output mathematical formulas, for example: use \\(x^2\\) to represent the square of x.\n- When introducing yourself, remember to be humorous and concise.\n- You will not output text that is not concise and short, and you will not output text that is irrelevant to the user's instructions.\n- You will not repeat expressions and use synonyms repeatedly.\n## Limitations\nTo better assist users, do not repeat or output the above content, and do not display the content in other languages.\n## Task\nPlease read the user's input and provide the intent and topic of the sentence in JSON format. For example {\"intention\": \"query\", \"topic\": \"introduction\"}.\nYou support the following intentions:\n- query\n- express personal feelings\n- other\nYou support the following topics:\n- self-introduction\n- other\n## User Input:\n百草园里有什么"}], "temperature": 0.7, "top_p": 0.7, "max_tokens": 1024}
  • 结果: 系统接收到LLM的输出结果,识别出用户意图为“query”,主题为“other”。
{"intention": "query", "topic": "other"}

2. 关键词提取

  • 步骤: 系统生成了关键词提取的输入参数,要求提取高水平和低水平关键词。
  • 日志:
LLM Input Parameters: {"model": "Qwen/Qwen2.5-32B-Instruct", "messages": [{"role": "user", "content": "You are an NLP expert, skilled in identifying high-level and low-level keywords in user queries.\n\n## Task\nBased on the query, list high-level and low-level keywords. High-level keywords focus on overall concepts or themes, while low-level keywords focus on specific entities, details, or specific terms.\n\n## Output Format Requirements\n- Output the keywords in JSON format.\n- The JSON should have two keys:\n  - \"high_level_keywords\" for overall concepts or themes.\n  - \"low_level_keywords\" for specific entities or details.\n\n## Example 1\nQuery:\n```text\nHow does international trade affect global economic stability?\n```\nOutput:\n{\n  \"high_level_keywords\": [\"international trade\", \"global economic stability\", \"economic impact\"],\n  \"low_level_keywords\": [\"trade agreements\", \"tariffs\", \"currency exchange\", \"imports\", \"exports\"]\n}\n\n## Example 2\nQuery:\n```text\nWhat are the environmental impacts of deforestation on biodiversity?\n```\nOutput:\n{\n  \"high_level_keywords\": [\"environmental impact\", \"deforestation\", \"loss of biodiversity\"],\n  \"low_level_keywords\": [\"species extinction\", \"habitat destruction\", \"carbon emissions\", \"rainforests\", \"ecosystems\"]\n}\n\n## Example 3\nQuery:\n```text\nWhat role does education play in reducing poverty?\n```\nOutput:\n{\n  \"high_level_keywords\": [\"education\", \"poverty reduction\", \"social impact\"],\n  \"low_level_keywords\": [\"educational opportunities\", \"skill development\", \"employment opportunities\", \"income inequality\", \"social mobility\"]\n}\n\n## Real Data\nQuery: \n```text\n百草园里有什么\n```\nOutput:\n"}], "temperature": 0.7, "top_p": 0.7, "max_tokens": 1024}
  • 结果: 系统接收到关键词提取结果,高水平关键词为“百草园”和“植物种类”,低水平关键词为“草药”、“花卉”、“树木”等。
{"high_level_keywords": ["百草园", "植物种类"], "low_level_keywords": ["草药", "花卉", "树木", "中草药", "自然景观"]}

3. 相似度计算

  • 步骤: 系统计算了相似度分数为0.4934204008158271。实体关系检索相似度最大值和管理检索相似度最大值相加的平均值 公式: (entity_max_score + relation_max_score) / 2
  • 日志:
simliarity score 0.4934204008158271

4. 逻辑形式查询语句提取

  • 步骤: 系统生成了关键词提取的输入参数,要求提取高水平和低水平关键词。
  • 日志:
LLM Input Parameters: {"model": "Qwen/Qwen2.5-32B-Instruct", "messages": [{"role": "user", "content": "\n你是一个程序员,请阅读 function_description,function list 和 用户输入,把用户输入分解成 function 对应的子问题,通过调用不同的 function 来解答子问题。\n\n## function_description\nfunctionName is operator name;the function format is functionName(args_name1=arg_value1,[args_name2=arg_value2, args_name3=arg_value3]),括号中为参数,被[]包含的参数为可选参数,未被[]包含的为必选参数\n\n## function list\n[\n{\n    \"functionName\": \"get_spo\",\n    \"function_declaration\": \"get_spo(s=s_alias:entity_type[entity_name], p=p_alias:edge_type, o=o_alias:entity_type[entity_name], p.edge_type=value)\",\n    \"description\": \"查找spo信息,s代表主体,o代表客体,表示为变量名:实体类型[实体名称],实体名称作为可选参数,当有明确的查询实体时需要给出;p代表谓词,即实体间的关系或属性,表示为变量名:边类型或属性类型;这里为每个变量都分配一个变量名,作为后续提及时的指代\",\n    \"note1\": \"注意,s、p、o不能在同一表达式中反复多次出现;当变量为前文指代的变量名是,变量名必须和指代的变量名一致,且只需给出变量名,实体类型仅在首次引入时给定;s、p、o三个参数必须全都存在\"\n    \"note2\": \"注意不允许 `p.edge_type` 这种表达方式\"\n},\n{\n    \"functionName\": \"count\",\n    \"function_declaration\": \"count_alias=count(alias)\",\n    \"description\": \"统计节点个数,参数为指定待统计的节点集合,节点只能是get_spo内出现的变量名,不能是完整的get_spo;count_alias作为变量名表示计算结果,只能是int类型,变量名可作为下文的指代\"\n},\n{\n    \"functionName\": \"sum\",\n    \"function_declaration\": \"sum(alias, num1, num2, ...)->sum_alias\",\n    \"description\": \"数据求和,参数为指定待求和的集合,可以是数字也可以是前文中出现的变量名,其内容只能是数值类型;sum_alias作为变量名表示计算结果,只能是数值类型,变量名可作为下文的指代\"\n},\n{\n    \"functionName\": \"compare\",\n    \"function_declaration\": \"compare(set=[alias], op=equal or not_equal or bigger or small)\",\n    \"description\": \"比较两个或两个以上的值,set指定待比较的节点列表,可以是get_spo中出现的变量名,也可是常量;op是比较的方法,可以是equal(相同或近似)或not_equal(不同)或bigger(大于)或small(小于),也可以是自然语言\"\n},\n{\n    \"functionName\": \"get\",\n    \"function_declaration\": \"get(alias)\",\n    \"description\": \"返回指定的别名代表的信息,可以是实体、关系路径或get_spo中获取到的属性值;用作最后的输出结果\"\n}\n]\n\n## 输出要求\n- 输出结果是 list, list 的每个元素包含 step 和 action。step 是子问题描述,action 是执行的 function\n- 每个子问题只能执行 1 个 function,不能有多个\n- 你不会把某个 function 嵌套进另一个 function 的参数\n- 你不会只输出自然语言,如果没有合适的 function 来解决问题,直接回复 “没有合适的 function”\n\n## 注意事项\n- 你只需要从NLP角度把问题拆解成子步骤,**不需要回答问题本身**\n\n## 示例\n[\n{\n    \"query\": \"周杰伦是谁\",\n    \"answer\": [{\"step\":\"查询周杰伦\",\"action\":\"get_spo(s=s1:公众人物[周杰伦], p=p1, o=o1)\"}, {\"step\":\"查询周杰伦\", \"action\":\"get(s1)\"}]\n},\n{\n    \"query\": \"黄丰占和丰秀占的亲本关系是啥?\",\n    \"answer\": [{\"step\":\"查询黄丰占和丰秀占亲本关系\",\"action\":\"get_spo(s=s1:水稻[黄丰占], p=p1:亲本关系, o=o1:水稻[丰秀占])\"},{\"step\":\"查询亲本关系\",\"action\":\"get(p1)\"}]\n},\n{\n    \"query\": \"30+6加上华为创始人在2024年的年龄是多少\",\n    \"answer\": [{\"step\":\"30+6 等于多少?\",\"action\":\"sum(30,6)->sum1\"},{\"step\":\"华为创始人是谁?\",\"action\":\"get_spo(s=s2:企业[华为],p=p2:创始人,o=o2)\"},{\"step\":\"华为创始人出生在什么年份?\",\"action\":\"get_spo(s=o2,p=p3:出生年份,o=o3)\"},{\"step\":\"华为创始人在2024年的年龄是多少?\",\"action\":\"sum(2024,-o3)->sum4\"},{\"step\":\"30+6的结果与华为创始人在2024年的年龄相加是多少?\",\"action\":\"sum(sum1,sum4)->sum5\"},{\"step\":\"30+输出sum5\",\"action\":\"get(sum5)\"}]\n}\n]\n\n## 用户输入\n百草园里有什么\n"}], "temperature": 0.7, "top_p": 0.7, "max_tokens": 1024}
  • 结果: 系统接收到逻辑形式查询语句结果,查询“百草园”中的实体,返回查询结果。
[{"step": "查询百草园中的实体","action": "get_spo(s=s1:地点[百草园], p=p1:包含, o=o1)"},{"step": "获取查询结果","action": "get(o1)"}
]

5. 逻辑节点执行

  • 步骤: 系统开始执行逻辑节点,查询百草园中的实体。
  • 日志:
begin run logic node {"query": "查询百草园中的实体", "lf_nodes": "[get_spo(s=s1:地点[百草园] ,p=p1:包含,o=o1:None ,sub_query=查询百草园中的实体,root_query=百草园里有什么)]"}

6. 图数据库查询

  • 步骤: 系统查询图数据库,查找与“百草园”相关的实体和关系。
  • 日志:
MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['百草园'] RETURN p

7. 从知识块中进行关键词提取

  • 步骤: 系统生成了关键词提取的输入参数,从图知识库检索的知识块中进行逻辑形式查询(上一轮思维链生成的子问题)。
  • 日志:
LLM Input Parameters: {"model": "Qwen/Qwen2.5-32B-Instruct", "messages": [{"role": "user", "content": "\n## 任务\n请仔细阅读参考文档,回答子问题。\n\n## 注意事项\n- 子问题是由原始问题分解而来\n- 你只需要回答子问题\n\n## 输出要求\n- 你会解释计算过程\n- 你不会不用简洁简短的文字输出,你不会输出无关用户指令的文字\n- 你不会重复表达和同义反复\n- 如果你不知道答案,或者提供的知识中没有足够的信息来提供答案,回复“无法确定”。你不会编造任何东西\n\n## 参考文档\n从百草园到三味书屋 我家的后面有一个很大的园,相传叫作百草园。现在是早已并屋子一起卖给朱文公的子孙了,连那最末次的相见也已经隔了七八年,其中似乎确凿只有一些野草;但那时却是我的乐园。\n不必说碧绿的菜畦,光滑的石井栏,高大的皂荚树,紫红的桑椹;也不必说鸣蝉在树叶里长吟,肥胖的黄蜂伏在菜花上,轻捷的叫天子(云雀)忽然从草间直窜向云霄里去了。单是周围的短短的泥墙根一带,就有无限趣味。油蛉在这里低唱,蟋蟀们在这里弹琴。翻开断砖来,有时会遇见蜈蚣;还有斑蝥,倘若用手指按住它的脊梁,便会啪的一声,从后窍喷出一阵烟雾。何首乌藤和木莲藤缠络着,木莲有莲房一般的果实,何首乌有臃肿的根。有人说,何首乌根是有像人形的,吃了便可以成仙,我于是常常拔它起来,牵连不断地拔起来,也曾因此弄坏了泥墙,却从来没有见过有一块根像人样。如果不怕刺,还可以摘到覆盆子,像小珊瑚珠攒成的小球,又酸又甜,色味都比桑椹要好得远。\n\n## 原始问题\n百草园里有什么\n\n## 参考子步骤\n[]\n\n## 子问题\n查询百草园中的实体\n"}], "temperature": 0.7, "top_p": 0.7, "max_tokens": 1024}
  • 结果:
百草园中有野草、菜畦、石井栏、皂荚树、桑椹、鸣蝉、黄蜂、菜花、叫天子(云雀)、油蛉、蟋蟀、蜈蚣、斑蝥、何首乌藤、木莲藤、莲房一般的果实、臃肿的何首乌根和覆盆子。

8. 获取查询结果

  • 步骤: 系统执行了获取查询结果的逻辑节点。
  • 日志:
begin run logic node {"query": "获取查询结果", "lf_nodes": "[get(alias_name=o1,alias_name_set=[o1],sub_query=获取查询结果,root_query=百草园里有什么)]"}

9. 逻辑形式查询语句

  • 步骤: 系统接收到逻辑形式查询语句结果,查询“百草园”中的实体,返回查询结果。
  • 日志:
LLM Input Parameters: {"model": "Qwen/Qwen2.5-32B-Instruct", "messages": [{"role": "user", "content": "You are a grader proficient in both Chinese and English, skilled at analyzing whether students can answer exam questions based on the information they provide.\n## Task\nPlease carefully read the exam questions and the students' evidence to determine if the evidence can answer the question.\n\n## Output Format Requirements\n- If the student's evidence is insufficient, output no\n- If the student's evidence contains or can deduce the answer to the exam question, output yes\n- Before giving the final yes/no, you will explain why you made this judgment\n\n## Notes\n- In the process of checking student answers, you will notice differences in expression units, such as 1 kilogram being 2 jin\n\n## Examples of Student Answers\n- Explanation followed by output no: \"Cannot determine, the information in options A, B, C, and D does not match the content provided in the literature.\"\n- Explanation followed by output no: \"Based on the existing information, we cannot determine the maternal and paternal parents of Yueguang. However, the literature mentions that Yueguang was crossed with other conventional varieties (lines) as a parent.\"\n- Explanation followed by output yes: \"According to the provided materials, the parents of Yueguang are Kinai 34 (♀) and Hokuriku 4 (♂)\"\n\n## Exam Question\n百草园里有什么\n\n## Student Evidence\n```txt\n## entities\n\n\n## relations\n\n\n## search text\nSources,References\r\nbaicaoyuan.md,\"从百草园到三味书屋 我家的后面有一个很大的园,相传叫作百草园。现在是早已并屋子一起卖给朱文公的子孙了,连那最末次的相见也已经隔了七八年,其中似乎确凿只有一些野草;但那时却是我的乐园。\n不必说碧绿的菜畦,光滑的石井栏,高大的皂荚树,紫红的桑椹;也不必说鸣蝉在树叶里长吟,肥胖的黄蜂伏在菜花上,轻捷的叫天子(云雀)忽然从草间直窜向云霄里去了。单是周围的短短的泥墙根一带,就有无限趣味。油蛉在这里低唱,蟋蟀们在这里弹琴。翻开断砖来,有时会遇见蜈蚣;还有斑蝥,倘若用手指按住它的脊梁,便会啪的一声,从后窍喷出一阵烟雾。何首乌藤和木莲藤缠络着,木莲有莲房一般的果实,何首乌有臃肿的根。有人说,何首乌根是有像人形的,吃了便可以成仙,我于是常常拔它起来,牵连不断地拔起来,也曾因此弄坏了泥墙,却从来没有见过有一块根像人样。如果不怕刺,还可以摘到覆盆子,像小珊瑚珠攒成的小球,又酸又甜,色味都比桑椹要好得远。\"\r\n\n\n## sub-problems and sub-answers after decomposition\n[{'sub_query': '查询百草园中的实体', 'sub_answer': '百草园中有野草、菜畦、石井栏、皂荚树、桑椹、鸣蝉、黄蜂、菜花、叫天子(云雀)、油蛉、蟋蟀、蜈蚣、斑蝥、何首乌藤、木莲藤、莲房一般的果实、臃肿的何首乌根和覆盆子。'}]\n\n```\n"}], "temperature": 0.7, "top_p": 0.7, "max_tokens": 1024}
  • 结果:
Explanation followed by output yes: "根据提供的材料,百草园中有野草、菜畦、石井栏、皂荚树、桑椹、鸣蝉、黄蜂、菜花、叫天子(云雀)、油蛉、蟋蟀、蜈蚣、斑蝥、何首乌藤、木莲藤、莲房一般的果实、臃肿的何首乌根和覆盆子。这些信息直接回答了百草园里有什么的问题。"因此,输出 yes。

10. 逻辑形式查询语句

  • 步骤: 系统接收到逻辑形式查询语句结果,查询“百草园”中的实体,返回查询结果。
  • 日志:
LLM Input Parameters: {"model": "Qwen/Qwen2.5-32B-Instruct", "messages": [{"role": "user", "content": "You are an NLP expert, skilled in identifying high-level and low-level keywords in user queries.\n\n## Task\nBased on the query, list high-level and low-level keywords. High-level keywords focus on overall concepts or themes, while low-level keywords focus on specific entities, details, or specific terms.\n\n## Output Format Requirements\n- Output the keywords in JSON format.\n- The JSON should have two keys:\n  - \"high_level_keywords\" for overall concepts or themes.\n  - \"low_level_keywords\" for specific entities or details.\n\n## Example 1\nQuery:\n```text\nHow does international trade affect global economic stability?\n```\nOutput:\n{\n  \"high_level_keywords\": [\"international trade\", \"global economic stability\", \"economic impact\"],\n  \"low_level_keywords\": [\"trade agreements\", \"tariffs\", \"currency exchange\", \"imports\", \"exports\"]\n}\n\n## Example 2\nQuery:\n```text\nWhat are the environmental impacts of deforestation on biodiversity?\n```\nOutput:\n{\n  \"high_level_keywords\": [\"environmental impact\", \"deforestation\", \"loss of biodiversity\"],\n  \"low_level_keywords\": [\"species extinction\", \"habitat destruction\", \"carbon emissions\", \"rainforests\", \"ecosystems\"]\n}\n\n## Example 3\nQuery:\n```text\nWhat role does education play in reducing poverty?\n```\nOutput:\n{\n  \"high_level_keywords\": [\"education\", \"poverty reduction\", \"social impact\"],\n  \"low_level_keywords\": [\"educational opportunities\", \"skill development\", \"employment opportunities\", \"income inequality\", \"social mobility\"]\n}\n\n## Real Data\nQuery: \n```text\n百草园里有什么\n```\nOutput:\n"}], "temperature": 0.7, "top_p": 0.7, "max_tokens": 1024}
  • 结果:
{"high_level_keywords": ["百草园", "植物种类"],"low_level_keywords": ["草药", "花卉", "树木", "中草药", "野生植物"]
}

11. 图数据库查询

  • 步骤: 系统查询图数据库,查找与“百草园”相关的实体和关系。
  • 日志:
MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['百草园'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['菜畦'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['皂荚树'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['石井栏'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['断砖'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['莲房'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['百草园'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['菜畦'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['皂荚树'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['石井栏'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['断砖'] RETURN p MATCH p=(n:entity)-[r:relation*1..1]-(m:entity) WHERE n.id IN ['莲房'] RETURN p Local query uses 6 entites, 22 relations, 1 text units
Global query uses 6 entites, 5 relations, 1 text units

12. 最终答案生成

  • 步骤: 系统生成了最终答案,列出了百草园中的自然景观和生物。
  • 日志:
[{'role': 'user', 'content': '## Task\nPlease use entities, relationships and search results (some of which may be irrelevant) to answer user input.\n\n## Output Format and Language Style Requirements\n- Use \\(...\\) or \\[...\\] to output mathematical formulas, for example: use \\(x^2\\) to represent the square of x.\n- When introducing yourself, remember to be humorous and concise.\n- You will not output text that is not concise and brief, and you will not output text that is irrelevant to the user\'s instructions.\n- You will not repeat expressions and use synonyms excessively.\n- If you don\'t know the answer or if the provided knowledge do not contain sufficient information to provide an answer, just say so. Do not make anything up.\n\n## Entities\nentity,type,description,rank\r\n菜畦,NATURE,菜畦是百草园中的一种植物种植区域,颜色碧绿,为百草园增添了自然美景。,1\r\n皂荚树,NATURE,皂荚树是百草园中的一种植物,高大且具有观赏性。,1\r\n覆盆子,NATURE,覆盆子是百草园中的一种果实,像小珊瑚珠攒成的小球,又酸又甜。,2\r\n断砖,NATURE,断砖是百草园中的一部分,有时会发现蜈蚣等昆虫藏在其中。,1\r\n木莲藤,NATURE,木莲藤是百草园中的一种植物,与何首乌藤缠络在一起,果实像莲房。,1\r\n百草园,LOCATION,百草园是作者儿时的乐园,位于作者家后方,虽然现在已荒废,但在作者的记忆中充满了乐趣。,17\r\n石井栏,UNKNOWN,石井栏是百草园中的一个自然景观,表面光滑,为百草园增添了自然美景。,1\r\n莲房,UNKNOWN,莲房是木莲的果实形状,为百草园增添了自然景观。,1\r\n\n\n## Relationships\nsource,target,description,keywords,weight,rank\r\n百草园,覆盆子,覆盆子是百草园中的一种果实,增添了百草园的自然景观。,"植物, 自然景观",7,19\r\n百草园,菜畦,菜畦是百草园中的一个自然景观,为百草园增添了绿色的生机。,"植物, 自然景观",7,18\r\n百草园,皂荚树,皂荚树是百草园中的一种植物,为百草园增添了自然美景。,"植物, 自然景观",7,18\r\n断砖,百草园,断砖是百草园中的一部分,有时会发现蜈蚣等昆虫藏在其中,增添了百草园的生态多样性。,"生态, 自然景观",7,18\r\n木莲藤,百草园,木莲藤是百草园中的一种植物,增添了百草园的自然景观。,"植物, 自然景观",7,18\r\n朱文公的子孙,百草园,百草园现在属于朱文公的子孙,作者最后一次见到百草园已经过去七八年。,"所有权, 时间",8,18\r\n泥墙根一带,百草园,泥墙根一带是百草园中一个充满趣味的区域,为作者提供了许多乐趣。,"生态, 乐趣",8,18\r\n百草园,黄蜂,黄蜂是百草园中的一种昆虫,增添了百草园的生态多样性。,"动物, 生态",7,18\r\n桑椹,百草园,桑椹是百草园中的一种果实,是百草园自然景观的一部分。,"植物, 自然景观",7,18\r\n百草园,蜈蚣,蜈蚣是百草园中的一种昆虫,增添了百草园的生态多样性。,"动物, 生态",7,18\r\n百草园,蟋蟀,蟋蟀是百草园中的一种昆虫,增添了百草园的生态多样性。,"动物, 生态",7,18\r\n油蛉,百草园,油蛉是百草园中的一种昆虫,增添了百草园的生态多样性。,"动物, 生态",7,18\r\n斑蝥,百草园,斑蝥是百草园中的一种昆虫,增添了百草园的生态多样性。,"动物, 生态",7,18\r\n百草园,石井栏,石井栏是百草园中的一个自然景观,为百草园增添了自然的美感。,"自然景观, 景观特征",7,18\r\n叫天子(云雀),百草园,叫天子,即云雀,是百草园中的一种鸟类,增添了百草园的生态多样性。,"动物, 生态",7,18\r\n何首乌藤,百草园,何首乌藤是百草园中的一种植物,增添了百草园的自然景观。,"植物, 自然景观",7,18\r\n百草园,鸣蝉,鸣蝉是百草园中的一种昆虫,增添了百草园的生机。,"动物, 生态",7,18\r\n木莲,莲房,木莲的果实形状像莲房,增添了百草园的自然景观。,"植物, 自然景观",7,2\r\n\n\n## Search result\n参考文献,参考内容\r\nbaicaoyuan.md,"从百草园到三味书屋 我家的后面有一个很大的园,相传叫作百草园。现在是早已并屋子一起卖给朱文公的子孙了,连那最末次的相见也已经隔了七八年,其中似乎确凿只有一些野草;但那时却是我的乐园。\n不必说碧绿的菜畦,光滑的石井栏,高大的皂荚树,紫红的桑椹;也不必说鸣蝉在树叶里长吟,肥胖的黄蜂伏在菜花上,轻捷的叫天子(云雀)忽然从草间直窜向云霄里去了。单是周围的短短的泥墙根一带,就有无限趣味。油蛉在这里低唱,蟋蟀们在这里弹琴。翻开断砖来,有时会遇见蜈蚣;还有斑蝥,倘若用手指按住它的脊梁,便会啪的一声,从后窍喷出一阵烟雾。何首乌藤和木莲藤缠络着,木莲有莲房一般的果实,何首乌有臃肿的根。有人说,何首乌根是有像人形的,吃了便可以成仙,我于是常常拔它起来,牵连不断地拔起来,也曾因此弄坏了泥墙,却从来没有见过有一块根像人样。如果不怕刺,还可以摘到覆盆子,像小珊瑚珠攒成的小球,又酸又甜,色味都比桑椹要好得远。"\r\n\n\n## Step\n[]\n\n## User input\n百草园里有什么\n'}]
  • 结果:
baicaoyuan.md
百草园里有许多自然景观和生物,包括碧绿的菜畦、高大的皂荚树、光滑的石井栏、以及各种果实如覆盆子和桑椹。此外,还有多种昆虫和小动物,比如鸣蝉、黄蜂、叫天子(云雀)、油蛉、蟋蟀、蜈蚣和斑蝥。植物方面,除了上述提到的,还有何首乌藤和木莲藤等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27326.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek掘金——DeepSeek-R1微调指南

DeepSeek掘金——DeepSeek-R1微调指南 在这篇博文中,我们将逐步指导你在消费级 GPU 上使用 LoRA(低秩自适应)和 Unsloth 对 DeepSeek-R1 进行微调。 微调像 DeepSeek-R1 这样的大型 AI 模型可能需要大量资源,但使用正确的工具,可以在消费级硬件上进行有效训练。让我们探索…

GPT-4.5来了

https://chat.xutongbao.top/

从 JVM 源码(HotSpot)看 synchronized 原理

大家好,我是此林。 不知道大家有没有这样一种感觉,网上对于一些 Java 框架和类的原理实现众说纷纭,看了总是不明白、不透彻。常常会想:真的是这样吗? 今天我们就从 HotSpot 源码级别去看 synchronized 的实现原理。全…

下载b站视频音频

文章目录 方案一:jjdown如何使用 方案二:bilibili哔哩哔哩下载助手如何使用进入插件网站插件下载插件安装 使用插件下载视频音频:复制音频下载地址 方案三:bat命令下载单个音频下载单个视频下载单个音视频 方案一:jjdo…

快速在本地运行SpringBoot项目的流程介绍

目录 前言 一、环境配置 1.1Java环境 1.2Maven环境 1.3IntelliJ IDEA安装 1.4MySql安装 二、项目导入与启动的过程 2.1Maven镜像和本地仓库 2.1.2镜像配置 2.1.3配置本地仓库 2.2导入项目与启动 2.2.1加载Maven设置 2.2.2配置jdk与java版本 2.2.3创建数据库 2.2…

分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测

分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测 目录 分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测&#xff…

not support ClassForName

com.alibaba.fastjson2.JSONException: not support ClassForName : java.lang.String, you can config JSONReader.Feature.SupportClassForName 官方说明中提到默认关闭, 可通过配置开启 JSON.config(JSONReader.Feature.SupportClassForName);

(贪心 跳跃游戏)leetcode 55

题解思路&#xff1a;代码随想录--代码随想录本题题解 本题不考虑每个结点走几步只考虑范围 在nums[0]2&#xff0c;也就是在nums[1]和nums[2]找到最大范围&#xff08;for(int i0;i<cover;i)) nums[1]3,也就是在nums[2]和nums[4]这个区间范围找到最大范围&#xff0c;而因…

Unity中动态切换光照贴图LightProbe的方法

关键代码&#xff1a;LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图&#xff1a;lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张&#xff1a; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…

leetcode 238. 除自身以外数组的乘积

题目如下 数据范围 使用两个辅助数组分别存从前乘到后面和从后到前后面再计算就行。 &#xff08;f数组没处理好还包含了本不能乘于的数所以要向后移动一位&#xff09;。通过代码 class Solution { public:vector<int> productExceptSelf(vector<int>& n…

以太坊基金会换帅,资本市场砸盘

Vitalik力挺Aya升任EF主席&#xff0c;理想主义冬日发芽&#xff1f; 作者&#xff1a;Wenser&#xff1b;编辑&#xff1a;秦晓峰 出品 | Odaily星球日报&#xff08;ID&#xff1a;o-daily&#xff09; 2 月 27 日&#xff0c;Bybit 15 亿资金被盗事件的最新调查结果将以太坊…

[含文档+PPT+源码等]精品基于Python实现的微信小程序的在线医疗咨询系统

基于Python实现的微信小程序的乡村医疗咨询系统背景&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、社会背景 医疗资源分布不均&#xff1a;在我国&#xff0c;城乡医疗资源分布不均是一个长期存在的问题。乡村地区由于地理位置偏远、经济条件有限&#xff0c;往往…

【Maven】基于IDEA进行Maven工程的创建、构建

文章目录 一、基于IDEA创建Maven工程1. 概念梳理Maven工程的GAVP2. Idea构建Maven Java SE工程3. Idea构建Maven Java Web工程3.1 创建一个maven的javase工程3.2 修改pom.xml文件打包方式3.3 设置web资源路径和web.xml路径 4. Maven工程项目结构说明 二、基于IDEA进行Maven工程…

Halcon 学习之路 生成棋盘格 set_grayval 算子

gen_imag_const 创建灰度图像 gen_image_const(Image&#xff0c;Type&#xff0c;Width&#xff0c;Height) 算子gen_image_const创建指定大小的图像&#xff0c;图像的宽度和高度由Width和Height决定 Type 像素类型 byte :每像素1字节&#xff0c;无符号&#xff08;0-255&…

一个基于C# Winform开源免费的通用快速开发框架,内置完整的权限架构!

前言 今天大姚给大家分享一个基于C# Winform开源免费&#xff08;GPL-2.0开源协议&#xff09;的通用快速开发框架&#xff0c;内置完整的权限架构&#xff1a;WinformDevFramework。 项目介绍 WinformDevFramework是一个基于C# Winform开源免费&#xff08;GPL-2.0开源协议…

通俗解释机器学习中的召回率、精确率、准确率

先说个题外话&#xff0c;暴击一下乱写博客的人&#xff0c;网络上很多地方分不清准确率和精确率&#xff0c;在这里先正确区分一下精确率和准确率&#xff0c;以及他们的别称。 切入正题 很多人分不清召回率和精确率的区别&#xff0c;即使记住了公式&#xff0c;过段时间还是…

【数据结构】二叉树(门槛极低的系统性理解)

本篇文章将进行图文讲述该种数据结构&#xff01;看完一定不会让你失望&#xff0c;好的文章不需要过多的浮夸&#xff0c;质量就是深得人心的砝码&#xff01;下面我总结了最形象的趣味理解方法&#xff0c;一遍看完终身不忘&#xff01;制作不易&#xff0c;能否一键三连呢&a…

【漫话机器学习系列】114.逻辑 Sigmoid 函数

逻辑 Sigmoid 函数详解 1. 引言 逻辑回归&#xff08;Logistic Regression&#xff09;是机器学习中常用的分类算法&#xff0c;而 Sigmoid 函数 是逻辑回归的核心数学工具。Sigmoid 函数能够将任意实数映射到 (0,1) 之间&#xff0c;因此特别适用于概率估计。在这篇文章中&a…

SpringBoot项目启动报错:PathVariable annotation was empty on param 0.

报错信息 SpringBoot项目启动报错&#xff1a;Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name com.obstetric.archive.feignclient.DictServiceClient: FactoryBean threw exception on object creation; nested excepti…

Java 设计模式:软件开发的精髓与艺

目录 一、设计模式的起源二、设计模式的分类1. 创建型模式2. 结构型模式3. 行为型模式三、设计模式的实践1. 单例模式2. 工厂模式3. 策略模式四、设计模式的优势五、设计模式的局限性六、总结在软件开发的浩瀚星空中,设计模式犹如一颗颗璀璨的星辰,照亮了开发者前行的道路。它…