fac value in bmesh.utils.edge_split
'fac' is a percent of the edge length, considered from the vertex indicated in the call.

For instance, if you run the code below on an edge suite, you'll see the growing percents applied on a length of 2 meters:



import bpy, bmesh


obj = bpy.context.object

if obj is not None:

    prevMode = obj.mode

    try:
        bpy.ops.object.mode_set(mode='EDIT', toggle=False)

        bm = bmesh.from_edit_mesh( obj.data )

        edgeCount = len(bm.edges)

        for i, e in zip( range(edgeCount), sorted( bm.edges, key=lambda e: e.verts[0].co[2] ) ): #Indexes and sorted edges from bottom to top
            fac = (i+1) / 10
            print(fac)
            ne, nv = bmesh.utils.edge_split( e, e.verts[0], fac)
            print(ne,nv)

    finally:   
        bpy.ops.object.mode_set(mode=prevMode, toggle=False)