langchian向量数据库 txt向量化
时间: 2025-08-19 08:52:02 浏览: 1
### 实现TXT文件文本向量化并存入LangChain向量数据库
#### 准备环境
为了完成此过程,需安装必要的库。通常涉及`langchain`、`transformers`以及所选的向量数据库客户端(如Pinecone)。可以通过pip命令来安装这些包。
```bash
pip install langchain transformers pinecone-client
```
#### 加载与预处理文本
对于TXT文件而言,首先要做的是读取文件内容,并对其进行适当的分词或切片以便后续处理。这里可以采用简单的按行读取方式或是更复杂的基于语义单元的分割方法。
```python
from langchain.text_splitter import CharacterTextSplitter
def load_and_process_text(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
splitter = CharacterTextSplitter(separator="\n\n", chunk_size=1000, chunk_overlap=200)
docs = splitter.split_documents([text])
return docs
```
上述代码定义了一个函数用于加载指定路径下的TXT文件,并利用`CharacterTextSplitter`将其切割成适合进一步处理的小段落[^2]。
#### 文本嵌入化
接下来就是将处理过的文本转化为数值形式——即所谓的“嵌入”。这一步骤依赖于预先训练好的语言模型来进行编码工作。以下是具体的操作:
```python
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
model = AutoModel.from_pretrained('sentence-transformers/all-MiniLM-L6-v2')
def embed_texts(texts):
inputs = tokenizer(texts, padding=True, truncation=True, max_length=512, return_tensors="pt")
outputs = model(**inputs)
embeddings = outputs.last_hidden_state.mean(dim=1).detach().numpy() # 取平均池化作为最终embedding
return embeddings.tolist()
```
这段脚本展示了怎样使用Hugging Face上的`sentence-transformers/all-MiniLM-L6-v2`模型对输入文本执行嵌入操作[^4]。
#### 向量存储至LangChain支持的向量数据库
一旦获得了文本对应的向量子表征之后,则可考虑如何有效地管理和检索它们。在这里选择了Pinecone作为一个例子说明如何连接并向其中上传数据。
```python
import pinecone
pinecone.init(api_key="YOUR_API_KEY", environment="us-west1-gcp")
index_name = "example-index"
if index_name not in pinecone.list_indexes():
pinecone.create_index(index_name, dimension=384)
index = pinecone.Index(index_name)
docs = load_and_process_text('./sample.txt')
embeddings = embed_texts(docs)
vectors_to_upsert = [(str(i), vec) for i, vec in enumerate(embeddings)]
response = index.upsert(vectors=vectors_to_upsert, namespace="documents")
print(f"Inserted {len(response['ids'])} vectors into Pinecone.")
```
以上代码片段实现了从本地TXT文件加载文本、生成相应的嵌入表示并通过API调用将这些向量插入到名为`example-index`的Pinecone索引中去的过程[^5]。
阅读全文
相关推荐
















