Langchain 加载网络信息实现RAG以及UnstructuredURLLoader的使用

以下实现了从 wikipedia 加载 Android 的网页然后保存在本地的向量数据库,然后通过上下文发给大模型,让他来总结什么是android 。

from langchain_community.vectorstores import Chroma
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_community.embeddings import JinaEmbeddings
from langchain_community.llms import Tongyi
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
import os
os.environ["DASHSCOPE_API_KEY"] = "sk-cc1c8314fdbd43ceaf26ec1824d5dd3b"
llm = Tongyi()from langchain_community.document_loaders import UnstructuredURLLoaderurls = ["https://en.wikipedia.org/wiki/Android_(operating_system)",# "https://answer.baidu.com/answer/land?params=MSZrNRfsun5P549PG8zUdV6PXibobtP6242M%2FwAkrm0sWWOs5IAFrz6XAVTZu6sZDpxyjT4AEJir6bCqxEWwPoy%2F7dCKyABf%2BFgxpeKWkX0isoUgqs7ViRSvL3B%2BBsajzbX1Ai05uEVz4Owgwf361B4xj1CwAAbsAD3PBqPnJT4%3D&from=dqa&lid=ebb4fc0600ddb6f0&word=%E4%BB%80%E4%B9%88%E6%98%AF%E8%8B%B9%E6%9E%9C",# "https://www.understandingwar.org/backgrounder/russian-offensive-campaign-assessment-february-8-2023",# "https://blog.csdn.net/oHeHui1/article/details/136261119?spm=1001.2014.3001.5502"
]loader = UnstructuredURLLoader(urls=urls)
documents = loader.load_and_split()
print(documents)
embeddings = JinaEmbeddings(jina_api_key="jina_c5d02a61c97d4d79b88234362726e94aVLMTvF38wvrElYqpGYSxFtC5Ifhj", model_name="jina-embeddings-v2-base-en"
)# # 第一次存入本地
vectorstore = Chroma.from_documents(documents, embeddings,persist_directory="./wikipedia")# # 从本地加载
# vectorstore = Chroma(persist_directory="./wikipedia", embedding_function=embeddings)retriever = vectorstore.as_retriever()
template = """Answer the question based on the context below. If the
question cannot be answered using the information provided answer
with "I don't know"     Context: {context}Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
llm = ChatGLM.ChatGLM_LLM(verbose=False)
output_parser = StrOutputParser()
setup_and_retrieval = RunnableParallel({"context": retriever, "question": RunnablePassthrough()}
)
chain = setup_and_retrieval | prompt | llm | output_parser
# print(chain.invoke("苹果是什么"))
# print(chain.invoke("苹果有哪些功效"))
# print(chain.invoke("如何创建虚拟环境"))
print(chain.invoke("what is android"))

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

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

相关文章

少儿编程热潮背后的冷思考、是不是“智商税”?

在科技飞速发展的今天,编程已成为一项基础技能,如同数学和语言一样,被认为是未来社会的重要通行证。随之而来的是少儿编程教育的火爆,各种编程班、在线课程如雨后春笋般涌现,吸引了无数家长的目光。然而,这…

【JS】【Vue3】【React】获取滚轮位置的方法:JavaScript、Vue 3和React示例

目录 使用JavaScript原生方法在Vue 3中获取滚轮位置在React中获取滚轮位置 随着Web应用程序的发展,滚轮位置的获取变得越来越重要,可以用于实现页面的滚动效果、导航条的隐藏和显示等功能。本文将探讨在JavaScript、Vue 3和React中获取滚轮位置的不同方法…

C语言——switch 语句的基本格式是什么?

一、问题 C语⾔中有两个构成选择结构的语句,即构成双分⽀的让if..else 语句和构成多分⽀的 switch..case 语句,switch 语句的基本格式是什么? 二、解答 switch (表达式) { case 常量表达式 1:语句1;break;case 常量表达式 n:语句n;break;de…

嵌入式学习day26 Linux

1.exec函数族 extern char **environ; int execl(const char *path, const char *arg, ... /* (char *) NULL */); int execlp(const char *file, const char *arg, ... /* (char *) NULL */); int execle(const char *…

【深度好文】simhash文本去重流程

对于类似于头条客户端而言,推荐的每一刷的新闻都必须是不同的新闻,这就需要对新闻文本进行排重。传统的去重一般是对文章的url链接进行排重,但是对于抓取的网页来说,各大平台的新闻可能存在重复,对于只通过文章url进行排重是不靠谱的,为了解决这个痛点于是就提出了用simh…

测试环境搭建整套大数据系统(七:集群搭建kafka(2.13)+flink(1.14)+dinky+hudi)

一:搭建kafka。 1. 三台机器执行以下命令。 cd /opt wget wget https://dlcdn.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz tar zxvf kafka_2.13-3.6.1.tgz cd kafka_2.13-3.6.1/config vim server.properties修改以下俩内容 1.三台机器分别给予各自的broker_id…

MapGIS农业信息化解决方案(2)

农业资源采集与调查 农业各项生产活动与农业资源息息相关,对农业资源进行调查,摸清农业家底, 为构筑农业“一张图”核心数据库奠定数据基础。MapGIS 农业资源采集与调查系统集成遥感、手持终端等调查技术,为农业资源采集提供实用、简捷的采集调查和信息录入工具,实现农田…

PCB设计十大黄金准则

PCB设计十大黄金准则 控制走线长度控制走线长度,顾名思义,即短线规则,在进行PCB设计时应该控制布线长度尽量短,以免因走线过长引入不必要的干扰,特别是一些重要信号线,如时钟信号走线,务必将其…

GoLevelDB构建数据字典

GoLevelDB 是一个开源的键值存储数据库,可以用于构建数据字典,下面是一些示例代码,展示了如何使用 GoLevelDB 来生成数据字典。 首先,你需要在 Go 中导入 GoLevelDB 包,并创建一个数据库实例。可以使用 leveldb.OpenF…

C# 找出两个Rectangle或是矩形的相互重合与非重合部分?

一、找出两个Rectangle或是矩形的相互重合与非重合部分? 示例代码1,求非重合部分: 使用GraphicsPath获取到非重合的路径,然后使用FillPath填充非重合部分Brush颜色。 using System.Drawing; using System.Drawing.Drawing2D; u…

linux查看socket信息

netstat netstat 是一个用于显示网络相关信息的命令行工具。它可以显示当前系统的网络连接状态、路由表、接口统计信息等。 下面是一些常见的 netstat 命令选项和用法: 显示所有活动的网络连接: netstat -a 显示所有正在监听的端口: ne…

深度学习 精选笔记(4)线性神经网络-交叉熵回归与Softmax 回归

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

现代化数据架构升级:毫末智行自动驾驶如何应对年增20PB的数据规模挑战?

毫末智行是一家致力于自动驾驶的人工智能技术公司,其前身是长城汽车智能驾驶前瞻分部,以零事故、零拥堵、自由出行和高效物流为目标,助力合作伙伴重塑和全面升级整个社会的出行及物流方式。 在自动驾驶领域中,是什么原因让毫末智行…

【设计模式】5种创建型模式详解

创建型模式提供创建对象的机制,能够提升已有代码的灵活性和复用性。 常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。不常用的有:原型模式。一、单例模式 1.1 单例模式介绍 1 ) 定义 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模…

Jupyterlab 和 JupyternoteBook 修改默认路径

Jupyterlab 和 JupyternoteBook 修改默认路径 在使用 JupyterLab 或 Jupyter Notebook 进行数据分析、机器学习项目时,经常会遇到需要修改默认工作目录的需求。默认情况下,JupyterLab 和 Jupyter Notebook 会在启动时打开你的用户目录(例如&…

Linux 不同架构、不同系统的问题

文章目录 一、麒麟V10(kylin)操作系统中,sudo执行程序后,其环境变量依然为用户家目录。(1)背景(2)原因(3)解决办法 二、统信(UOS)操作…

.norm() 范数

(A- B).norm().item() 是默认计算A与B的第二范数,如果你想计算差向量的第一范数(也称为L1范数),可以在norm()方法中传递p1参数,这样就会计算出L1范数。例如: (A- B).norm(p1).item() 其中,使用…

【CMake】(13)流程控制

条件判断 基本语法 条件判断的基本语法如下: if(<condition>)<commands> elseif(<condition>)<commands> else()<commands> endif()if(<condition>):检查条件是否满足。如果满足,则执行随后的命令直到遇到elseif、else或endif。else…

Java虚拟机(JVM)的调优是为了提高Java应用程序的性能、稳定性和资源利用率

Java虚拟机&#xff08;JVM&#xff09;的调优是为了提高Java应用程序的性能、稳定性和资源利用率。以下是一些建议的JVM调优技巧&#xff1a; 调整堆大小&#xff1a; 设置堆的大小以适应应用程序的需求。通过调整-Xms&#xff08;初始堆大小&#xff09;和-Xmx&#xff08;最…

GDB之(1)入门指令参数介绍

GDB之(1)基础入门指令参数介绍 Author&#xff1a;Once Day Date: 2022年7月29日/2024年2月26日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-CSDN博客 推荐参考文档&#xff1a; GDB: The GNU Project Debugger (sourceware.o…