- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
一旦加载了文档,通常会希望对其进行转换以更好地适应您的应用程序.
最简单的例子是,您可能希望将长文档拆分为较小的块,以适应模型的上下文窗口。LangChain具有许多内置的文档转换器,可以轻松地拆分、合并、过滤和其他操作文档.
当你想处理长篇文本时,有必要将文本分成块。听起来很简单,但这里存在着潜在的复杂性。理想情况下,你希望将语义相关的文本片段放在一起.
从高层次上看,文本分割器的工作原理如下:
这意味着您可以沿两个不同轴向定制您的文本分割器:
1. 如何拆分文字 2. 如何测量块大小 。
RecursiveCharacterTextSplitter
文本分割器该文本分割器接受一个字符列表作为参数,根据第一个字符进行切块,但如果任何切块太大,则会继续移动到下一个字符,并以此类推。默认情况下,它尝试进行切割的字符包括 ["\n\n", "\n", " ", ""] 。
除了控制可以进行切割的字符外,您还可以控制其他一些内容:
Embeddings类是一个专门用于与文本嵌入模型进行交互的类。有许多嵌入模型提供者(OpenAI、Cohere、Hugging Face等)-这个类旨在为所有这些提供者提供一个标准接口.
嵌入将一段文本创建成向量表示。这非常有用,因为它意味着我们可以在向量空间中思考文本,并且可以执行语义搜索等操作,在向量空间中寻找最相似的文本片段.
LangChain中基础的Embeddings类公开了两种方法:一种用于对文档进行嵌入,另一种用于对查询进行嵌入。前者输入多个文本,而后者输入单个文本。之所以将它们作为两个独立的方法,是因为某些嵌入提供者针对要搜索的文件和查询(搜索查询本身)具有不同的嵌入方法.
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings()
embeddings = embeddings_model.embed_documents( [ "Hi there!", "Oh, hello!", "What's your name?", "My friends call me World", "Hello World!" ] )
嵌入一段文本,以便与其他嵌入进行比较
embedded_query = embeddings_model.embed_query("What was the name mentioned in the conversation?")
存储和搜索非结构化数据最常见的方法之一是将其嵌入并存储生成的嵌入向量,然后在查询时将非结构化查询进行嵌入,并检索与嵌入查询“最相似”的嵌入向量.
向量存储库负责为您存储已经过嵌入处理的数据并执行向量搜索.
下面以 Chroma 为例展示功能和用法 。
## 使用 Chroma 作为向量数据库,实现语义搜索
from langchain.document_loaders import TextLoader from langchain_openai import OpenAIEmbeddings from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import Chroma # 加载长文本 raw_documents = TextLoader('../tests/state_of_the_union.txt',encoding='utf-8').load()
# 实例化文本分割器 text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=0)
# 分割文本 documents = text_splitter.split_documents(raw_documents)
embeddings_model = OpenAIEmbeddings()
# 将分割后的文本,使用 OpenAI 嵌入模型获取嵌入向量,并存储在 Chroma 中 db = Chroma.from_documents(documents, embeddings_model)
query = "What did the president say about Ketanji Brown Jackson" docs = db.similarity_search(query) print(docs[0].page_content)
embedding_vector = embeddings_model.embed_query(query) docs = db.similarity_search_by_vector(embedding_vector) print(docs[0].page_content)
最后此篇关于LangChain基础篇(05)的文章就讲到这里了,如果你想了解更多关于LangChain基础篇(05)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Chuỗi bài hướng dẫn nhanh về Vue3 - Cơ bản Chúng tôi đã phát triển với vue2 và react. Nâng cấp từ vue2 lên vue3 rất tốn kém, đặc biệt là đối với các dự án lớn hơn. Do đó, nhiều công ty vẫn tiếp tục sử dụng vue2 cho các dự án cũ và dự án mới
C# Cơ bản Tạo dự án C# Lưu ý rằng máy ảo win10 cần được vá, nếu không, việc tải trực tiếp visual studio 2022 sẽ cho thấy phiên bản không hỗ trợ HelloWorld Các tệp lớp C# đều kết thúc bằng .cs và phương thức nhập là sta
Một câu hỏi rất cơ bản về quản lý bộ nhớ iPhone: Giả sử tôi có một viewController có một số chế độ xem phụ cũng được viewController điều khiển. Khi tôi xóa top viewControll
Tôi vẫn đang cố gắng làm quen với con trỏ. Vấn đề không phải ở khái niệm - tôi hiểu vị trí bộ nhớ, việc khớp các gia số con trỏ có độ dài thay đổi, v.v. - mà là cú pháp. Đây là một trong những điều tôi thấy khó hiểu/trực quan: int a = 42; phân bổ và đặt vào một không gian bộ nhớ có kích thước của một số int.
1. Giới thiệu Kafka (Apache Kafka) là một nền tảng dữ liệu phát trực tuyến phân tán ban đầu được LinkedIn phát triển và sau đó được tặng cho Apache Software Foundation, trở thành một dự án cấp cao của Apache. Nó được thiết kế để xử lý lớn
1. Để vận hành máy chủ MySQL trong dấu nhắc lệnh, hãy thêm các biến hệ thống. (Máy tính - Thuộc tính hệ thống - Biến môi trường - Đường dẫn) 2. Truy vấn dữ liệu trong bảng dữ liệu; chọn selection_lis
Thêm, xóa, sửa đổi và truy vấn bảng MySQL (cơ bản) 1. Bình luận CRUD: Trong SQL, bạn có thể sử dụng “–space + description” để chỉ các bình luận CRUD, cụ thể là thêm (Create), truy vấn (Retrieve), cập nhật (Update), xóa (Delete)
Tôi có một trang web mở ra một cửa sổ hiển thị khi được tải và trong cửa sổ đó, tôi có một liên kết mở ra một cửa sổ thứ hai. Khi hộp thoại thứ hai bị đóng (bằng cách nhấp vào nút đóng hoặc nhấp ra bên ngoài hộp thoại), tôi muốn mở lại hộp thoại đầu tiên. Đối với nút đóng, tôi có thể thực hiện điều này bằng cách thêm
Sử dụng Thuộc tính được lấy dữ liệu cốt lõi, làm thế nào để tôi thực hiện yêu cầu đơn giản này: Tôi muốn lấy một thuộc tính ( myFetchProp ) từ cửa hàng StoreA, điều này sẽ thực hiện như sau: [ myFetchProp
đóng cửa. Câu hỏi này dựa trên ý kiến. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để khi chỉnh sửa bài đăng này, bạn có thể trả lời bằng các sự kiện và trích dẫn. Đã đóng 8 năm trước. Cải thiện điều này
Gần đây, tôi được giao một dự án Drupal hiện có và được yêu cầu cải thiện giao diện người dùng (HTML, JavaScript, CSS). Tôi có rất nhiều kinh nghiệm phát triển front-end và back-end trong Django, PHP, Ruby, v.v., nhưng tôi không có bất kỳ kinh nghiệm nào về Drupal.
Tôi đang cố gắng để người dùng quyết định những gì cần làm bằng cách sử dụng lớp máy quét nhưng tôi gặp vấn đề là mã không kích hoạt sau khi chạy và không cho tôi bỏ qua bất kỳ hàng nào. Mã của tôi trông như thế này: Đầu vào máy quét = Máy quét mới (S
Xin lỗi vì tiêu đề mơ hồ vì tôi không thể hiểu nó được gọi là gì. Về cơ bản là tạo ra một chương trình nhỏ để tính toán các khoản thanh toán tài chính của sinh viên. Khi tôi chạy lệnh này, nó tính toán hạn ngạch đối tượng mà không có vấn đề gì. Tuy nhiên, bất kể tôi thử thế nào thì đối tượng "grant" dường như chỉ trả về kết quả là 0.
Đây là mã của tôi - main() { double x; double y = pow(((1/3 + sin(x/2))(pow(x, 3) + 3)), 1/3); print
Xin lỗi nếu thuật ngữ của tôi không chính xác trong câu hỏi này. Hãy sử dụng hàm sau: i = 1; v = i * 2; for (j = 0; j < 4; j++ ) { console.log(v);
Tôi có nhiều tệp lớp khác nhau trong ứng dụng của mình. Tôi có 5 lớp, 2 trong số đó là Hoạt động và 1 là dịch vụ đang chạy. 2 cái còn lại chỉ là lớp học. Vòng đời của các biến trong hai lớp này là gì? Tôi biết rằng một Hoạt động có thể bị hệ điều hành hủy bỏ
Ví dụ, một phương thức trả về một đối tượng có kiểu List. public List bojangles () ... một số mã gọi phương thức FooBar.bojangles.iterator(); Tôi mới làm quen với Java
Tôi đang gặp một vấn đề kỳ lạ khi lưới không thay đổi kích thước đúng trên màn hình. Khi tôi sử dụng 12 cột lớn, nó chỉ chiếm 1/3 ở giữa màn hình, xem hình ảnh. Tôi không chắc điều gì đang gây ra vấn đề này. Tôi không có mã CSS lạ nào có thể khiến điều này xảy ra. Tôi sẽ không
Tôi đã thử sử dụng cả tệp tiêu đề và tệp nguồn nhưng gặp phải sự cố. Vì vậy, tôi đã tạo một phiên bản đơn giản hóa những gì tôi đang cố gắng thực hiện và tôi gặp lỗi tương tự trong CodeBlocks (tham chiếu không xác định đến add(double
Tôi đang sử dụng Foundation cho hệ thống lưới của mình, nhưng điều này có thể là vấn đề ở bất kỳ hệ thống lưới nào. Về cơ bản, tôi có 3 ô được bao bọc trong một hộp chứa, nhưng một trong các ô sẽ phát triển đến đường viền trang (giữ nguyên trong Sampe-Image của tôi) nhưng điều này cũng có thể ở phía bên phải).
Tôi là một lập trình viên xuất sắc, rất giỏi!