LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve

这篇具有很好参考价值的文章主要介绍了LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接着前面的Langchain,继续实现读取YouTube的视频脚本来问答Indexes for information retrieve

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄

LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve,LLM-Large Language Models,langchain,chatgpt,LLM,faiss,prompt

1. 安装youtube-transcript-api

pip install youtube-transcript-api

pip install faiss-cpu

pip install tiktoken

引用向量数据库Faiss
LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve,LLM-Large Language Models,langchain,chatgpt,LLM,faiss,prompt

2. 编写读取视频字幕并存入向量数据库Faiss,文件langchain_helper.py

# 从langchain包和其他库中导入必要的模块
from langchain.document_loaders import YoutubeLoader  # 导入YoutubeLoader,用于加载YouTube视频数据
from langchain.text_splitter import RecursiveCharacterTextSplitter  # 导入文本分割器,用于处理文档
from langchain.embeddings.openai import OpenAIEmbeddings  # 导入OpenAIEmbeddings,用于生成嵌入向量
from langchain.vectorstores import FAISS  # 导入FAISS,用于大数据集中高效的相似性搜索
from langchain.llms import OpenAI  # 导入OpenAI,用于语言模型功能
from langchain import PromptTemplate  # 导入PromptTemplate,用于模板化提示
from langchain.chains import LLMChain  # 导入LLMChain,用于创建语言模型链
from dotenv import load_dotenv  # 导入load_dotenv,用于管理环境变量

load_dotenv()  # 从.env文件加载环境变量

embedding = OpenAIEmbeddings()  # 初始化OpenAI嵌入向量,用于生成文档嵌入向量

# YouTube视频的URL
video_url = "https://youtu.be/-Osca2Zax4Y?si=iy0iePxzUy_bUayO"

def create_vector_db_from_youtube_url(video_url: str) -> FAISS:
    # 加载YouTube视频字幕
    loader = YoutubeLoader.from_youtube_url(video_url)
    transcript = loader.load()
    
    # 将字幕分割成较小的片段
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
    docs = text_splitter.split_documents(transcript)
    
    # 从文档片段创建FAISS数据库
    db = FAISS.from_documents(docs, embedding)
    return db

# 示例:从给定YouTube URL创建向量数据库
print(create_vector_db_from_youtube_url(video_url))

zgpeaces-MBP at ~/Workspace/LLM/langchain-llm-app ±(feature/infoRetrievel) ✗ ❯ python langchain_helper.py
/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/langchain/__init__.py:39: UserWarning: Importing PromptTemplate from langchain root module is no longer supported.
  warnings.warn(
<langchain.vectorstores.faiss.FAISS object at 0x11b1e96f0>

LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve,LLM-Large Language Models,langchain,chatgpt,LLM,faiss,prompt

3. 根据向量数据库的信息查询

查看OpenAI model
LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve,LLM-Large Language Models,langchain,chatgpt,LLM,faiss,prompt

3.1 添加查询方法

# 从langchain包和其他库中导入必要的模块
from langchain.document_loaders import YoutubeLoader  # 导入YoutubeLoader,用于从YouTube视频加载数据
from langchain.text_splitter import RecursiveCharacterTextSplitter  # 导入用于处理长文档的文本分割器
from langchain.embeddings.openai import OpenAIEmbeddings  # 导入OpenAIEmbeddings,用于生成文档嵌入向量
from langchain.vectorstores import FAISS  # 导入FAISS,用于大数据集中高效的相似性搜索
from langchain.llms import OpenAI  # 导入OpenAI,用于访问语言模型功能
from langchain import PromptTemplate  # 导入PromptTemplate,用于创建结构化的语言模型提示
from langchain.chains import LLMChain  # 导入LLMChain,用于构建使用语言模型的操作链
from dotenv import load_dotenv  # 导入load_dotenv,用于从.env文件加载环境变量

load_dotenv()  # 从.env文件加载环境变量

embedding = OpenAIEmbeddings()  # 初始化OpenAI嵌入向量的实例,用于生成文档嵌入向量

# YouTube视频的URL
video_url = "https://youtu.be/-Osca2Zax4Y?si=iy0iePxzUy_bUayO"

def create_vector_db_from_youtube_url(video_url: str) -> FAISS:
    # 加载YouTube视频字幕
    loader = YoutubeLoader.from_youtube_url(video_url)
    transcript = loader.load()

    # 将字幕分割成较小的片段
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
    docs = text_splitter.split_documents(transcript)

    # 从文档片段创建FAISS数据库
    db = FAISS.from_documents(docs, embedding)
    return db

def get_response_from_query(db, query, k=4):
    # 对给定查询执行数据库的相似性搜索
    docs = db.similarity_search(query, k=k)

    # 连接前几个文档的内容
    docs_page_content = " ".join([d.page_content for d in docs])
    
    # 初始化一个OpenAI语言模型
    llm = OpenAI(model="text-davinci-003")

    # 定义语言模型的提示模板
    prompt = PromptTemplate(
        input_variables=["question", "docs"],
        template = """
        You are a helpful assistant that that can answer questions about youtube videos 
        based on the video's transcript.
        
        Answer the following question: {question}
        By searching the following video transcript: {docs}
        
        Only use the factual information from the transcript to answer the question.
        
        If you feel like you don't have enough information to answer the question, say "I don't know".
        
        Your answers should be verbose and detailed.
    """,
    )

    # 使用定义的提示创建一个语言模型链
    chain = LLMChain(llm=llm, prompt=prompt)

    # 使用查询和连接的文档运行链
    response = chain.run(question=query, docs=docs_page_content)

    # 通过替换换行符来格式化响应
    response = response.replace("\n", " ")
    return response, docs

# 示例用法:从YouTube视频URL创建向量数据库
# print(create_vector_db_from_youtube_url(video_url))

3.2 Streamlit 实现入参视频地址和查询内容

main.py

import streamlit as st  # 导入Streamlit库,用于创建Web应用程序
import langchain_helper as lch  # 导入自定义模块'langchain_helper',用于处理langchain操作
import textwrap  # 导入textwrap模块,用于格式化文本

st.title("YouTube Assistant")  # 设置Streamlit网页应用的标题

# 使用Streamlit的侧边栏功能来创建输入表单
with st.sidebar:
    # 在侧边栏中创建一个表单
    with st.form(key='my_form'):
        # 创建一个文本区域用于输入YouTube视频URL
        youtube_url = st.sidebar.text_area(
            label="What is the YouTube video URL?",
            max_chars=50
        )
        # 创建一个文本区域用于输入关于YouTube视频的查询
        query = st.sidebar.text_area(
            label="Ask me about the video?",
            max_chars=50,
            key="query"
        )
        
        # 创建一个提交表单的按钮
        submit_button = st.form_submit_button(label='Submit')

# 检查是否同时提供了查询和YouTube URL
if query and youtube_url:
    # 从YouTube视频URL创建向量数据库
    db = lch.create_vector_db_from_youtube_url(youtube_url)
    # 根据向量数据库获取查询的响应
    response, docs = lch.get_response_from_query(db, query)
    # 在应用程序中显示一个副标题“回答:”
    st.subheader("Answer:")
    # 显示响应,格式化为每行85个字符
    st.text(textwrap.fill(response, width=85))

运行

$ streamlit run main.py

You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://192.168.50.10:8501

  For better performance, install the Watchdog module:

What is the YouTube video URL?
https://youtu.be/-Osca2Zax4Y?si=iy0iePxzUy_bUayO

Ask me about the video?
What did they tal about Ransomware?

LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve,LLM-Large Language Models,langchain,chatgpt,LLM,faiss,prompt

参考文章来源地址https://www.toymoban.com/news/detail-754237.html

  • https://github.com/zgpeace/pets-name-langchain/tree/feature/infoRetrievel
  • https://python.langchain.com/docs/integrations/document_loaders/youtube_transcript
  • https://youtu.be/lG7Uxts9SXs?si=H1CISGkoYiKRSF5V
  • https://engineering.fb.com/2017/03/29/data-infrastructure/faiss-a-library-for-efficient-similarity-search/
  • https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo

到了这里,关于LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 向量数据库入坑:传统文本检索方式的降维打击,使用 Faiss 实现向量语义检索

    在上一篇文章《聊聊来自元宇宙大厂 Meta 的相似度检索技术 Faiss》中,我们有聊到如何快速入门向量检索技术,借助 Meta AI(Facebook Research)出品的 faiss 实现“最基础的文本内容相似度检索工具”,初步接触到了“语义检索”这种对于传统文本检索方式具备“降维打击”的新

    2024年02月16日
    浏览(50)
  • 《向量数据库指南》:向量数据库Pinecone如何集成LangChain (一)

    目录 LangChain中的检索增强 建立知识库 欢迎使用Pinecone和LangChain的集成指南。本文档涵盖了将高性能向量数据库Pinecone与基于大型语言模型(LLMs)构建应用程序的框架LangChain集成的步骤。   Pinecone使开发人员能够基于向量相似性搜索构建可扩展的实时推荐和搜索系统。另一方

    2024年02月15日
    浏览(41)
  • 基于Langchain+向量数据库+ChatGPT构建企业级知识库

    ▼最近直播超级多, 预约 保你有收获 近期直播: 《 基于 LLM 大模型的向量数据库企业级应用实践 》  1 — LangChain 是什么? 众所周知 OpenAI 的 API 无法联网的,所以如果只使用自己的功能实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能肯定

    2024年02月06日
    浏览(61)
  • 使用Langchain+GPT+向量数据库chromadb 来创建文档对话机器人

    使用Langchain+GPT+向量数据库chromadb 来创建文档对话机器人 文件存放地址 参考: https://python.langchain.com/docs/use_cases/chatbots https://python.langchain.com/docs/integrations/vectorstores/chroma https://blog.csdn.net/v_JULY_v/article/details/131552592?ops_request_misc=%257B%2522request%255Fid%2522%253A%252216945020581680022659096

    2024年02月03日
    浏览(44)
  • 向量数据库:使用Elasticsearch实现向量数据存储与搜索

    Here’s the table of contents:   Elasticsearch在7.x的版本中支持 向量检索 。在向量函数的计算过程中,会对所有匹配的文档进行线性扫描。因此,查询预计时间会随着匹配文档的数量线性增长。出于这个原因,建议使用查询参数来限制匹配文档的数量(类似二次查找的逻辑,先使

    2024年02月07日
    浏览(61)
  • 美国大模型风向速报(一)为何重视提示工程?LangChain+向量数据库+开源大模型真香...

    多家,且独家来自美国的信源同时向“亲爱的数据”表示, 提示工程(Prompt Engineering)在美国大模型领域备受重视。 读者都要聊, 那就干活。 (一)开源真香 现阶段,AI开源极客大展身手,新的软件栈正在形成之中。 开源很香,但是开源是零收费,但不是零成本。 甲方着

    2024年02月12日
    浏览(47)
  • (一)AI本地知识库问答(可运行):LangChain+Chroma向量数据库+OpenAi大模型

    只需要看config目录下的config.py,data目录下的txt知识库文件,db向量数据库文件在持久化部署后会自动生成,route下的app.py,scripts目录下的Chroma向量库持久化部署.py这几个就可以,scripts目录下的考勤问答.py和test目录下都是单独的自己测试的小代码,可以不用关注 因为运行需要

    2024年02月03日
    浏览(53)
  • Elasticsearch:什么是向量和向量存储数据库,我们为什么关心?

    Elasticsearch 从 7.3 版本开始支持向量搜索。从 8.0 开始支持带有 HNSW 的 ANN 向量搜索。目前 Elasticsearch 已经是全球下载量最多的向量数据库。它允许使用密集向量和向量比较来搜索文档。 向量搜索在人工智能和机器学习领域有许多重要的应用。 有效存储和检索向量的数据库对于

    2024年02月08日
    浏览(53)
  • ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 LangChain 集成搭建智能文档问答系统

    目录 准备工作 主要参数 准备数据 开始提问 本文将演示如何使用 Zilliz Cloud 和 LangChain 搭建基于大语言模型(LLM)的问答系统。在本例中,我们将使用一个 1 CU 的 Cluster,还将使用 OpenAI 的 Embedding API 来获取指定文本的向量表示。现在就让我们开始吧。 运行本页中的脚本需要

    2024年02月15日
    浏览(46)
  • 向量数据库的崛起:如何改变数据存储与机器学习的未来

      每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与

    2024年04月28日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包