AI(学习笔记第十五课)从langchain的v0.3到v1.0

文章目录

  • AI(学习笔记第十五课)从langchain的v0.3到v1.0
    • [1. `langchain v1.0`的`semantic search`](#1. langchain v1.0的semantic search)
      • [1.1 从`semantic search`开始](#1.1 从semantic search开始)
      • [1.2 从`pdf loader`开始练习](#1.2 从pdf loader开始练习)
        • [1.2.1 `pdf file`的准备](#1.2.1 pdf file的准备)
        • [1.2.2 `pdf loader`将`pdf`分成`documents`对象](#1.2.2 pdf loader将pdf分成documents对象)
        • [1.3 使用`text splitter`对docs进行`split`](#1.3 使用text splitter对docs进行split)
        • [1.4 使用`embeddings`的`model`构建向量库`embeding vector`](#1.4 使用embeddings的model构建向量库embeding vector)
    • [2. 执行`vector stores and retrievers`](#2. 执行vector stores and retrievers)
      • [2.1 使用`InMemoryVector`来保存`vector`](#2.1 使用InMemoryVector来保存vector)
      • [2.2 使用`InMemoryVector`来进行`query`](#2.2 使用InMemoryVector来进行query)
        • [2.2.1 执行代码](#2.2.1 执行代码)
        • [2.2.2 执行结果](#2.2.2 执行结果)

AI(学习笔记第十五课)从langchain的v0.3到v1.0

  • langchain v1.0的semantic search
  • Documents and document loaders
  • Text splitters
  • Embeddings
  • Vector stores and retrievers

langchain v1.0 learn

从这里开始继续学习。

1.1 从semantic search开始

示例代码

这里需要解释的是,在前面的文章AI(学习笔记第四课) 使用langchain进行AI开发 load documents(pdf)

中,已经学习过同样的内容,但是全新的langchain v1.0已经开始了,从这里继续学习。

1.2 从pdf loader开始练习

1.2.1 pdf file的准备

示例的代码工程中已经准备好了pdf文件,可以作为示例使用。
langchain_from_v1.0/docs/examples_data/nke-10k-2023.pdf

1.2.2 pdf loader将pdf分成documents对象
python 复制代码
from langchain_core.documents import Document
from langchain_community.document_loaders import PyPDFLoader
def main():
    """Main entry point for the application."""
    print("Starting My Python Project...")

    file_path = "./docs/examples_data/nke-10k-2023.pdf"
    loader = PyPDFLoader(file_path)

    docs = loader.load()

    print(len(docs))
    print(f"{docs[0].page_content[:200]}\n")
    print(docs[0].metadata)

这里看到,整个一个pdf文件已经被load成复数的docs。

1.3 使用text splitter对docs进行split
python 复制代码
text_splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000, chunk_overlap=200, add_start_index=True
    )
    all_splits = text_splitter.split_documents(docs)
    print(len(all_splits))

可见,langchain对文本的处理是基于split之后的chunk的。

  • 每个chunk的size可以设定,这里设定成1000。
  • 另外这里的chunk_overlap=200也是有意义的,这里表示每个chunk之间的互相overlap的size,因为如果不互相overlap,那么chunk交界的部分很容易就会弄错,因为边界的文本会有很大的关系。
1.4 使用embeddings的model构建向量库embeding vector
python 复制代码
embeddings = OllamaEmbeddings(
        model="nomic-embed-text",
        base_url=OLLAMA_BASE_URL)
    vector_1 = embeddings.embed_query(all_splits[0].page_content)
    vector_2 = embeddings.embed_query(all_splits[1].page_content)
    
    # Example command line arguments
    assert len(vector_1) == len(vector_2)
    print(f"Generated vectors of length {len(vector_1)}\n")
    print(vector_1[:10])

执行结果如下

可见,每个chunk的size是1000,但是最终被embeding model向量化之后,每个chunk的vector的尺寸就是768,这个vector就代表了这个chunk。这些vector是可以做相似性(cosine similarity)比较。

2. 执行vector stores and retrievers

2.1 使用InMemoryVector来保存vector

这里可以看到,516个chunks都被生成了768的固定长度的vector。接下来学习如何进行InMemoryVector的使用。

python 复制代码
# create an empty InMemoryVectorStu'using embeding model
    vector_store = InMemoryVectorStore(embeddings)
    # add documents into vector store
    ids = vector_store.add_documents(documents=all_splits)

2.2 使用InMemoryVector来进行query

2.2.1 执行代码
python 复制代码
    results = vector_store.similarity_search(
        "How many distribution centers does Nike have in the US?"
    )

    print(results[0])
2.2.2 执行结果

可见,使用vector store很容易将需要的文本查询到,但是这里还没有使用big model进行分析,还只是使用了embeding model。

到这里,从langchain v0.3过渡到了langchain v1.0,接下俩继续学习langchain v1.0。

相关推荐
Easy_API5 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo5 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
代码山河5 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
紧跟先前的步伐5 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
sbjdhjd6 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
释厄6236 小时前
AI学习层更新与跨体转移律——人类社会同构·不缺理解缺 U
人工智能·学习
老金带你玩AI7 小时前
集万家所长,一键复制的Agent.md!
人工智能
ZhuoAIStage7 小时前
舞台工艺多专业审图提速:用 AI 智能体编排 A+B+C+G 四段读图流水线
人工智能·自动化·工作流编排·舞台工艺·审图智能体
小奶包他干奶奶7 小时前
AI学习——1、机器学习概念
人工智能·机器学习
展讯快报7 小时前
悬浮提词器免费App评估报告:说得AI的免费策略与可用性分析
人工智能