BAAI / bge-m3
Milvus Integrated
Tarea: Inserción
Modalidad: Texto
Métrica de Similitud: Coseno, producto punto
Licencia: En
Dimensiones: 1024
Tokens de Entrada Máximos: 8192
Precio: Gratis
Introducción a BGE-M3
BGE-M3 es un modelo de incrustación de texto desarrollado por BAAI, diseñado para ofrecer versatilidad en distintos idiomas y tareas. Es compatible con más de 100 idiomas y admite tamaños de entrada de hasta 8192 tokens. Esta capacidad permite a BGE-M3 sobresalir en tareas de recuperación densas, dispersas y multivectoriales, lo que lo hace muy eficaz para la recuperación de documentos y la respuesta a preguntas. El rendimiento de vanguardia del modelo se demuestra en pruebas de referencia como MKQA y MLDR. Su arquitectura incluye la destilación de autoconocimiento, lo que mejora su adaptabilidad y precisión en diversos conjuntos de datos y lo convierte en una potente herramienta para la recuperación de información multilingüe.
Cómo crear incrustaciones con BGE-M3
Hay dos formas de generar incrustaciones vectoriales:
- PyMilvus](https://github.com/milvus-io/pymilvus): el SDK de Python para Milvus que integra perfectamente el modelo
bge-m3. - Biblioteca FlagEmbedding: la biblioteca de Python
FlagEmbedding.
Una vez creadas las incrustaciones vectoriales, pueden almacenarse en Zilliz Cloud (un servicio de base de datos vectorial totalmente gestionado e impulsado por Milvus) y utilizarse para la búsqueda semántica de similitudes. He aquí cuatro pasos clave:
- Regístrate](https://cloud.zilliz.com/signup) para obtener una cuenta gratuita de Zilliz Cloud.
- Configurar un clúster sin servidor](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster) y obtener el Public Endpoint and API Key.
- Crea una colección de vectores e inserta tus incrustaciones vectoriales.
- Ejecuta una búsqueda semántica en las incrustaciones almacenadas.
Crear incrustaciones a través de PyMilvus
from pymilvus.model.hybrid import BGEM3EmbeddingFunction
from pymilvus import MilvusClient, DataType, AnnSearchRequest, WeightedRanker
ef = BGEM3EmbeddingFunction()
docs = [
"La inteligencia artificial se fundó como disciplina académica en 1956",
"Alan Turing fue la primera persona en llevar a cabo una investigación sustancial en IA",
"Nacido en Maida Vale, Londres, Turing fue criado en el sur de Inglaterra."
]
# Generar incrustaciones para documentos
docs_embeddings = ef.encode_documents(docs)
queries = ["¿Cuándo se fundó la inteligencia artificial?
"¿Dónde nació Alan Turing?"]
# Generar incrustaciones para las consultas
incrustaciones_consulta = ef.codificar_consultas(consultas)
cliente = MilvusClient(
uri=ZILLIZ_PUBLIC_ENDPOINT,
token=ZILLIZ_API_KEY)
esquema = cliente.crear_esquema(
auto_id=Verdadero,
enable_dynamic_field=True,
)
schema.add_field(field_name="pk", datatype=DataType.INT64, is_primary=True)
schema.add_field(
field_name="vector_denso",
datatype=Tipo_datos.FLOAT_VECTOR,
dim=ef.dim["denso"],
)
schema.add_field(
field_name="vector_espeso", datatype=Tipo_datos.VECTOR_ESPACIO_FLOJO
)
index_params = client.prepare_index_params()
index_params.add_index(
field_name="vector_denso", index_type="FLAT", metric_type="IP"
)
index_params.add_index(
nombre_campo="vector_denso",
index_type="SPARSE_INVERTED_INDEX",
metric_type="IP",
)
COLECCIÓN = "documentos"
if client.has_collection(nombre_coleccion=COLLECTION):
client.drop_collection(nombre_coleccion=COLECCION)
client.create_collection(
nombre_colección=COLECCIÓN,
esquema=esquema,
param_índice=param_índice,
enable_dynamic_field=True,
)
for i in range(len(docs)):
doc, dense_embedding, sparse_embedding = docs[i], docs_embeddings["dense"][i], docs_embeddings["sparse"][[i]]
client.insert(COLLECTION, {"text": doc, "dense_vector": dense_embedding, "sparse_vector": sparse_embedding})
k = 1
req_list = []
dense_embedding = query_embeddings["dense"][0]
sparse_embedding = query_embeddings["sparse"][[0]]
dense_search_param = {
"data" [dense_embedding],
"anns_field": "dense_vector",
"param": {"metric_type": "IP"},
"limit": k * 2,
}
dense_req = AnnSearchRequest(**dense_search_param)
req_list.append(dense_req)
sparse_search_param = {
"datos [sparse_embedding],
"anns_field": "sparse_vector",
"param": {"metric_type": "IP"},
"limit": k * 2,
}
sparse_req = AnnSearchRequest(**sparse_search_param)
req_list.append(sparse_req)
resultados = client.hybrid_search(
COLECCIÓN,
req_list,
WeightedRanker(1.0, 1.0),
k,
consistency_level="Strong",
output_fields=["text"]
)
Consulte nuestra Documentación de PyMilvus para obtener una guía detallada paso a paso.
Generar incrustaciones vectoriales mediante la biblioteca FlagEmbedding.
from pymilvus import MilvusClient, DataType, AnnSearchRequest, WeightedRanker
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=False)
docs = [
"La inteligencia artificial se fundó como disciplina académica en 1956",
"Alan Turing fue la primera persona en realizar una investigación sustancial en IA",
"Nacido en Maida Vale, Londres, Turing se crió en el sur de Inglaterra."
]
# Generar incrustaciones para documentos
docs_embeddings = model.encode(docs, return_dense=True, return_sparse=True)
queries = ["¿Cuándo se fundó la inteligencia artificial?
"¿Dónde nació Alan Turing?"]
# Generar incrustaciones para las consultas
query_embeddings = model.encode(queries, return_dense=True, return_sparse=True)
client = MilvusClient(
uri=ZILLIZ_PUBLIC_ENDPOINT,
token=ZILLIZ_API_KEY)
esquema = cliente.crear_esquema(
auto_id=Verdadero,
enable_dynamic_field=True,
)
schema.add_field(field_name="pk", datatype=DataType.INT64, is_primary=True)
schema.add_field(
field_name="vector_denso",
datatype=TipoDatos.FLOAT_VECTOR,
dim=1024,
)
esquema.add_field(
field_name="vector_espeso", datatype=Tipo_datos.VECTOR_ESPACIO_FLOJO
)
index_params = client.prepare_index_params()
index_params.add_index(
field_name="vector_denso", index_type="FLAT", metric_type="IP"
)
index_params.add_index(
nombre_campo="vector_denso",
index_type="SPARSE_INVERTED_INDEX",
metric_type="IP",
)
COLECCIÓN = "documentos"
if client.has_collection(nombre_coleccion=COLLECTION):
client.drop_collection(nombre_coleccion=COLECCION)
client.create_collection(
nombre_colección=COLECCIÓN,
esquema=esquema,
param_índice=param_índice,
enable_dynamic_field=True,
)
for i in range(len(docs)):
doc, dense_embedding, sparse_embedding = docs[i], docs_embeddings["dense_vecs"][i], docs_embeddings["lexical_weights"][i]
client.insert(COLLECTION, {"text": doc, "dense_vector": dense_embedding, "sparse_vector": {int(k): sparse_embedding[k] for k in sparse_embedding}})
k = 1
req_list = []
dense_embedding = query_embeddings["dense_vecs"][0]
sparse_embedding = {int(k): query_embeddings["lexical_weights"][0][k] for k in query_embeddings["lexical_weights"][0]}
dense_search_param = {
"datos": [dense_embedding],
"anns_field": "dense_vector",
"param": {"metric_type": "IP"},
"limit": k * 2,
}
dense_req = AnnSearchRequest(**dense_search_param)
req_list.append(dense_req)
sparse_search_param = {
"datos [sparse_embedding],
"anns_field": "sparse_vector",
"param": {"metric_type": "IP"},
"limit": k * 2,
}
sparse_req = AnnSearchRequest(**sparse_search_param)
req_list.append(sparse_req)
resultados = client.hybrid_search(
COLECCIÓN,
req_list,
WeightedRanker(1.0, 1.0),
k,
consistency_level="Strong",
output_fields=["text"]
)
Lectura adicional
- Elección del modelo de incrustación adecuado para sus datos](https://zilliz.com/blog/choosing-the-right-embedding-model-for-your-data)
- Evaluación del modelo de incrustación](https://zilliz.com/learn/evaluating-your-embedding-model)
- Entrenamiento de su propio modelo de incrustación de texto](https://zilliz.com/learn/training-your-own-text-embedding-model)_
- Guía para principiantes sobre fragmentación e incrustación de sitios web para sus aplicaciones RAG](https://zilliz.com/learn/beginner-guide-to-website-chunking-and-embedding-for-your-genai-applications)_[¿Qué es RAG?
- ¿Qué es el GAR?](https://zilliz.com/learn/Retrieval-Augmented-Generation)_
Flujos de trabajo de IA sin interrupciones
Desde incrustaciones hasta búsqueda de IA escalable—Zilliz Cloud te permite almacenar, indexar y recuperar incrustaciones con una velocidad y eficiencia inigualables.
Prueba Zilliz Cloud Gratis

