微信扫码
与创始人交个朋友
我要投稿
01
02
03
04
05
服务名称 | 您可以自定义。 | |
模型来源 | 使用默认的开源公共模型。 | |
通常选择通义千问7B。例如,Qwen1.5-7b。 | ||
实例数 | 使用默认的1。 | |
按需选择GPU资源配置。例如,ml.gu7i.c16m30.1-gu30。 | ||
Milvus实例的内网地址。您可以在Milvus实例的实例详情页面查看。 | ||
Milvus实例的Proxy Port。您可以在Milvus实例的实例详情页面查看。 | ||
配置为root。 | ||
配置为数据库名称,例如default。创建Milvus实例时,系统会默认创建数据库default,您也可以手动创建新的数据库,具体操作,请参见管理Databases【https://help.aliyun.com/zh/milvus/user-guide/manage-databases】。 | ||
输入新的Collection名称或已存在的Collection名称。对于已存在的Collection,Collection结构应符合PAI-RAG要求,例如您可以填写之前通过EAS部署RAG服务时自动创建的Collection。 | ||
VPC | 创建阿里云Milvus实例选择时的VPC、交换机和安全组。您可以在Milvus实例的实例详情页面查看。 | |
交换机 | ||
安全组名称 |
pip3 install pymilvus langchain dashscope beautifulsoup4
vim milvusr-llm.py
from langchain_community.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores.milvus import Milvus
from langchain.schema.runnable import RunnablePassthrough
from langchain.prompts import PromptTemplate
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.llms.pai_eas_endpoint import PaiEasEndpoint
# 设置Milvus Collection名称。
COLLECTION_NAME = 'doc_qa_db'
# 设置向量维度。
DIMENSION = 768
loader = WebBaseLoader([
'https://milvus.io/docs/overview.md',
'https://milvus.io/docs/release_notes.md',
'https://milvus.io/docs/architecture_overview.md',
'https://milvus.io/docs/four_layers.md',
'https://milvus.io/docs/main_components.md',
'https://milvus.io/docs/data_processing.md',
'https://milvus.io/docs/bitset.md',
'https://milvus.io/docs/boolean.md',
'https://milvus.io/docs/consistency.md',
'https://milvus.io/docs/coordinator_ha.md',
'https://milvus.io/docs/replica.md',
'https://milvus.io/docs/knowhere.md',
'https://milvus.io/docs/schema.md',
'https://milvus.io/docs/dynamic_schema.md',
'https://milvus.io/docs/json_data_type.md',
'https://milvus.io/docs/metric.md',
'https://milvus.io/docs/partition_key.md',
'https://milvus.io/docs/multi_tenancy.md',
'https://milvus.io/docs/timestamp.md',
'https://milvus.io/docs/users_and_roles.md',
'https://milvus.io/docs/index.md',
'https://milvus.io/docs/disk_index.md',
'https://milvus.io/docs/scalar_index.md',
'https://milvus.io/docs/performance_faq.md',
'https://milvus.io/docs/product_faq.md',
'https://milvus.io/docs/operational_faq.md',
'https://milvus.io/docs/troubleshooting.md',
])
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=0)
# 使用LangChain将输入文档安照chunk_size切分
all_splits = text_splitter.split_documents(docs)
# 设置embedding模型为DashScope(可以替换成自己模型)。
embeddings = DashScopeEmbeddings(
model="text-embedding-v2", dashscope_api_key="your_api_key"
)
# 创建connection,host为阿里云Milvus的访问域名。
connection_args = {"host": "c-xxxx.milvus.aliyuncs.com", "port": "19530", "user": "your_user", "password": "your_password"}
# 创建Collection
vector_store = Milvus(
embedding_function=embeddings,
connection_args=connection_args,
collection_name=COLLECTION_NAME,
drop_old=True,
).from_documents(
all_splits,
embedding=embeddings,
collection_name=COLLECTION_NAME,
connection_args=connection_args,
)
# 利用Milvus向量数据库进行相似性检索。
query = "What are the main components of Milvus?"
docs = vector_store.similarity_search(query)
print(len(docs))
# 声明LLM 模型为PAI EAS(可以替换成自己模型)。
llm = PaiEasEndpoint(
eas_service_url="your_pai_eas_url",
eas_service_token="your_token",
)
# 将上述相似性检索的结果作为retriever,提出问题输入到LLM之后,获取检索增强之后的回答。
retriever = vector_store.as_retriever()
template = """Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
Use three sentences maximum and keep the answer as concise as possible.
Always say "thanks for asking!" at the end of the answer.
{context}
Question: {question}
Helpful Answer:"""
rag_prompt = PromptTemplate.from_template(template)
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| rag_prompt
| llm
)
print(rag_chain.invoke("Explain IVF_FLAT in Milvus."))
设置Milvus Collection名称,您可以自定义。 | |
本文示例使用的Embedding模型(text-embedding-v2),您也可以替换成您实际使用的模型。有关Embedding的更多信息,请参见Embedding(https://help.aliyun.com/zh/model-studio/user-guide/embedding)。 | |
dashscope_api_key | 百炼的API-KEY。 |
| |
配置为步骤1中获取的服务访问地址。本文示例声明LLM模型为PAI(EAS),您也可以替换成您实际使用的模型。 | |
eas_service_token | 配置为步骤1中获取的服务Token。 |
python3 milvusr-llm.py
4IVF_FLAT is a type of index in Milvus that divides vector data into nlist cluster units and compares distances between the target input vector and the center of each cluster. It uses a smaller number of clusters than IVF_FLAT, which means it may have slightly higher query time but also requires less memory. The encoded data stored in each unit is consistent with the original data.
06
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-21
用LangChain教AI模仿你的写作风格:详细教程
2024-12-18
一站式 LLM 工程观测平台:Langfuse,让所有操作可观测
2024-12-17
LLMs开发者必看!Pydantic AI代理框架震撼登场!
2024-12-16
用LangChain实现一个Agent
2024-12-16
大模型部署调用(vLLM+LangChain)
2024-12-14
利用 LangGraph 和代理优化工作流程效率:关键功能、用例和集成...
2024-12-09
深度丨LangChain团队基于Agents用户体验设计的研究
2024-12-03
带LangGraph的多智能体工作流
2024-04-08
2024-08-18
2024-06-03
2024-10-10
2024-04-08
2024-04-17
2024-06-24
2024-04-11
2024-07-13
2024-04-12
2024-12-02
2024-11-25
2024-10-30
2024-10-11
2024-08-18
2024-08-16
2024-08-04
2024-07-29