当前位置: 首页 > news >正文

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"))

相关文章:

  • MCU最小系统电路设计(以STM32F103C8T6为例)
  • Unity接入SQLite (三):C#封装SQL命令
  • 蓝桥杯倒计时47天!DFS基础——图的遍历
  • 如何将域名解析成IP地址?
  • EfficientSAM | 借助MIM机制,MetaAI让SAM更高效!
  • 编程笔记 html5cssjs 092 JavaScript 表单控件
  • 防火墙的内容安全
  • 顶顶通呼叫中心中间件-如何使处于机器人话术中的通话手动转接到坐席分机上讲解(mod_cti基于FreeSWITCH)
  • Qt篇——QTableWidget保存表格数据到Excel文件中,读Excel内容到QTableWidget
  • 人工智能之Tensorflow程序结构
  • 信息安全计划
  • hive中如何取交集并集和差集
  • ES项目应用
  • 用html编写的小广告板
  • MongoDB之MongoDBConnectorBI安装与使用
  • 分享一款快速APP功能测试工具
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • ➹使用webpack配置多页面应用(MPA)
  • Apache Zeppelin在Apache Trafodion上的可视化
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Docker: 容器互访的三种方式
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Kibana配置logstash,报表一体化
  • MobX
  • Node + FFmpeg 实现Canvas动画导出视频
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • springboot_database项目介绍
  • spring学习第二天
  • Vue 2.3、2.4 知识点小结
  • vue 配置sass、scss全局变量
  • 程序员最讨厌的9句话,你可有补充?
  • 码农张的Bug人生 - 见面之礼
  • 前端js -- this指向总结。
  • 移动端解决方案学习记录
  • 与 ConTeXt MkIV 官方文档的接驳
  • FaaS 的简单实践
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #162 (Div. 2)
  • #include
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (WSI分类)WSI分类文献小综述 2024
  • (理论篇)httpmoudle和httphandler一览
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)visual stdio 书签功能介绍
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .Net中ListT 泛型转成DataTable、DataSet
  • .net中生成excel后调整宽度
  • .so文件(linux系统)
  • @Autowired多个相同类型bean装配问题
  • @javax.ws.rs Webservice注解
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [BUAA软工]第一次博客作业---阅读《构建之法》